【问题标题】:Symfony : strtolower in FORM EVENTSymfony:FORM EVENT 中的 strtolower
【发布时间】:2017-12-02 06:32:40
【问题描述】:

使用 Symfony 3.3,我想降低所有电子邮件表单。

我使用这个扩展:

class EmailTypeExtension extends AbstractTypeExtension
{
    public function getExtendedType()
    {
        return EmailType::class;
    }

    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder->addEventListener(
            FormEvents::POST_SUBMIT,
            [
                $this,
                'onPostSubmit'
            ]
        );
    }

    public function onPostSubmit(FormEvent $event)
    {
        $form = $event->getForm();
        $data = $event->getData();

        $form->setData(strtolower($data));
    }
}

但是我有这个错误“您不能更改已提交表单的数据。”。如果我使用“PRE_SUBMIT”或“SUBMIT”事件,我的数据不会改变:/

你能帮帮我吗?

【问题讨论】:

  • 你应该努力提高接受率(71 个问题中的 9 个)。

标签: symfony symfony-3.3


【解决方案1】:

您不能使用$form->setData() 方法修改您的表单。
您必须像这样修改FormEvent $event 的数据:

public function onPostSubmit(FormEvent $event)
    {
        $data = $event->getData();

        // e.g. manipulate submitted data only if it is not empty
        if ($data["email"]) {
            $data["email"] = strtolower($data["email"]);
            $event->setData($data);
        }
    }

【讨论】:

  • 非常感谢 :)
猜你喜欢
  • 2011-06-23
  • 2011-01-25
  • 2011-05-25
  • 2011-08-09
  • 2015-01-13
  • 2016-01-22
  • 2013-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多