Symfony2嵌入表单值

时间:2014-03-31 08:54:45

标签: php forms symfony symfony-forms

我有自己的实用程序CalculatorType,用于计算我的文档的值(我正在使用ODM),而不是另一个文档或子数组的引用。 它有简单的2输入:

 $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'
            ));

在父母表格中,我有:

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

因此,当我尝试保存表单时,出现错误:

Neither the property "calculator" nor one of the methods

要跳过设置计算器字段,我添加了mapped =>假选项

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

并添加了eventlistener来转换计算器数据

    $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);
    });

现在表单提交值但计算器字段未传递给嵌入表单,因为未设置$ data ['calculator']

如果我评论unset($data["calculator"]);,那么我有错误

This form should not contain extra fields 

所以我找不到任何方法让这个表格起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在我的表单中发现错误,因此可以选择此类表单:http://symfony.com/doc/current/cookbook/form/inherit_data_option.html