php - Symfony 表单 : customize the setter that is called

标签 php symfony symfony-forms

我有一个实体的 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/

相关文章:

php - 以 Symfony 形式上传文件

PHP:将字符串转换为多维数组

PHP:返回对数组元素的引用

symfony - 如何在 Symfony2 中处理 SQL 触发器?

php - 访问 PHP 数组对象 protected 属性

symfony - 如何从 Controller 动态设置表单的级联验证

php - Laravel Eloquent,如何从多对多关系中选择某种类型的用户

PHP PDO MYSQL-使用 implode() 更新列中具有多个值的单元格,用旧值获取新值

php - Symfony3 多对多关联查询中的 Doctrine2

symfony - 无法访问 Twig 中的每个对象属性