Symfony:表单事件中的 strtolower
Symfony : strtolower in FORM EVENT
使用 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));
}
}
但是我有这个错误"You cannot change the data of a submitted form."。如果我使用 "PRE_SUBMIT" 或 "SUBMIT" 事件,我的数据不会改变:/
你能帮帮我吗?
您不能使用 $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);
}
}
使用 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));
}
}
但是我有这个错误"You cannot change the data of a submitted form."。如果我使用 "PRE_SUBMIT" 或 "SUBMIT" 事件,我的数据不会改变:/
你能帮帮我吗?
您不能使用 $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);
}
}