gpt4 book ai didi

symfony - 建议在 Symfony 中的哪个位置修改绑定(bind)表单数据?

转载 作者:行者123 更新时间:2023-12-02 09:08:06 25 4
gpt4 key购买 nike

我有一个用于创建新客户的表单。客户可能有手机号码。手机号码应保留,不带用户可以键入的 +00 前缀。这可以通过以下方式轻松完成:

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

哪个是放置此代码的最佳位置?

  • 在调用实体管理器并保留实体之前在 CustomerController 内。这真的是 MVC 模式中 Controller 的问题吗?
  • 使用 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

关于symfony - 建议在 Symfony 中的哪个位置修改绑定(bind)表单数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11697560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com