我有一个实体的 Symfony 表单自定义类型。
我想自定义提交表单时执行的代码,但仅限于某个字段。
例如,Symfony 默认会这样调用:
$entity->setFoo($value);
我想调用类似的方法:
$entity->doSomething($value, true);
如何在不影响与表单正确映射的所有其他属性的情况下做到这一点?
最佳答案
您可以将表单中的 foo
字段定义为 not mapped
,然后在将调用您的 的
方法:POST_SUBMIT
上添加监听器doSomething()
$builder->add('foo', null, array('mapped' => false))
;
$builder->addEventListener(
FormEvents::POST_SUBMIT,
function(FormEvent $event) {
$entity = $event->getForm()->getData();
$entity->doSomething($event->getForm()->get('foo')->getData(), true);
}
);
它不会调用$entity->setFoo($value)
。相反,它会按照您的意愿调用 $entity->doSomething($value, true)
。
关于php - Symfony 表单 : customize the setter that is called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22075054/