Question

I have my own utility CalculatorType for just calculating values for my document(I am using ODM), not reference for another document or sub arrays|object. It has simple 2 inputs:

 $builder
            ->add('price', 'text', array(
                'label' => false,
                'data' => isset($options['data']) ? $options['data']->getPrice() : '0.00'
            ))
            ->add('count', 'integer', array(
                'label' => false,
                'data' => isset($options['data']) ? $options['data']->getCount() : '10000'
            ));

In parent form I have:

$builder->
 ... // multiple fields
 ->add('calculator', 'calculator');

So when I am trying to save my form, I have an error:

Neither the property "calculator" nor one of the methods

To skip setting calculator field, I've added mapped => false to options

 ->add('calculator', 'calculator', array('mapped' => false));

and added eventlistener to transform calculator data

    $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {
        $data = $event->getData();
        $data["price"] = $data["calculator"]["price"];
        $data["count"] = $data["calculator"]["count"];
        unset($data["calculator"]);
        $event->setData($data);
    });

Now form submits values but calculator fields not passing to embed form, because of unsetting $data['calculator']

If I comment unset($data["calculator"]); then I have an error

This form should not contain extra fields 

So I can't find any way to make this form work. Any ideas?

Was it helpful?

Solution

Found mistake in my form, so there is option for such type of forms: http://symfony.com/doc/current/cookbook/form/inherit_data_option.html

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top