我有自己的实用程序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
所以我找不到任何方法让这个表格起作用。有什么想法吗?
答案 0 :(得分:0)
在我的表单中发现错误,因此可以选择此类表单:http://symfony.com/doc/current/cookbook/form/inherit_data_option.html