这是建议的地点在Symfony的修改绑定表单数据?(Which is the suggested p

2019-06-26 14:16发布

我有一个表单创建一个新的Customer 。 客户可以有一个手机号码。 移动数量应不持续+00前缀用户可以键入。 这可以用伊斯利来完成:

$customer->setMobile(preg_replace("/^(\+|00)/", '', $customer->getMobile()));

这是把这段代码的最佳地点?

  • 里面CustomerController之前调用实体管理器和持久的实体。 这真的是在MVC模式的控制器的问题?
  • 使用SanitizeCustomerSubscriber ,听FormEvents:POST_BIND事件
  • 使用CustomerSanitizer服务

任何其他的想法? 当然,我在一般情况下,手机号码,说数据操作的仅仅是一个例子:待净化领域的不应该仅仅是一个。

Answer 1:

你应该在做这个PRE_BIND活动期间,凡正在处理之前,您可以访问提交的数据。

$builder->addEventListener(FormEvents::PRE_BIND, function (FormEvent $event) {
    $data = $event->getData();
    if (isset($data['mobile'])) {
        $data['mobile'] = preg_replace("/^(\+|00)/", '', $data['mobile']);
    }
    $event->setData($data);
});

为了记录在案,作为Symfony的2.3,这一事件被称为PRE_SUBMIT



Answer 2:

我投入这个Customer setMobile()方法-数据本身,更好的更近。 通过这种方式,手机号码将被无论是用来设置该怎么控制器或形式的消毒。



文章来源: Which is the suggested place to modify binded form data in Symfony?