在Symfony中修改绑定表单数据的建议位置是哪个?

前端之家收集整理的这篇文章主要介绍了在Symfony中修改绑定表单数据的建议位置是哪个?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个表单来创建一个新的客户.客户可能有手机号码.移动号码应该持久化,不能使用或00前缀,用户可以键入.这可以很容易地实现:
$customer->setMobile(preg_replace("/^(\+|00)/",'',$customer->getMobile()));

这是代码最好的地方?

>在客户控制器之前,调用实体管理器并持续实体.这真的是MVC模式中的控制器的问题吗?
>使用SanitizeCustomerSubscriber并监听FormEvents:POST_BIND事件
>使用CustomerSanitizer服务

任何其他想法?当然,我在谈论数据操作一般来说,手机号码只是一个例子:要消毒的字段可能不止一个.

解决方法

您应该在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.

猜你在找的HTML相关文章