Mat*_*oli 5 php symfony-forms symfony
我有一个实体的Symfony表单自定义类型.
我想自定义提交表单时执行的代码,但仅限于字段.
例如,Symfony默认会调用:
$entity->setFoo($value);
Run Code Online (Sandbox Code Playgroud)
我想打电话来代替:
$entity->doSomething($value, true);
Run Code Online (Sandbox Code Playgroud)
如何在不影响与表单正确映射的所有其他属性的情况下执行此操作?
您可以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);
}
);
Run Code Online (Sandbox Code Playgroud)
它不会打电话$entity->setFoo($value).相反,它会$entity->doSomething($value, true)按你的意愿打电话.
| 归档时间: |
|
| 查看次数: |
3338 次 |
| 最近记录: |