Php 出错后如何向Symfony表单添加表单元素
我有一张symfony2表格 我想做的是,如果有错误,在表单中添加一个captcha字段,因此第二次也需要填写。验证码在这里不是重要的问题,但提交后如何添加该字段,如果提交后无法更改发件人,我如何知道该字段已提交 因此,主要的问题是,如果出现错误,如何添加文本输入字段?尝试以下方法:Php 出错后如何向Symfony表单添加表单元素,php,forms,symfony,Php,Forms,Symfony,我有一张symfony2表格 我想做的是,如果有错误,在表单中添加一个captcha字段,因此第二次也需要填写。验证码在这里不是重要的问题,但提交后如何添加该字段,如果提交后无法更改发件人,我如何知道该字段已提交 因此,主要的问题是,如果出现错误,如何添加文本输入字段?尝试以下方法: public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('f
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('foo', 'number')
->add('bar', 'number')
->add('submit', 'submit')
;
$builder->addEventListener(FormEvents::PRE_SUBMIT, [$this, 'onPreSubmit']);
}
public function onPreSubmit(FormEvent $event)
{
if (!$event->getForm()->isValid()) {
$event->getForm()->add('test', 'text', [
'mapped' => false
]);
}
}
使用表单事件在提交后添加字段:谢谢,但正如我所写的,我只在第一个错误之后才需要它。如果我只使用事件,那么在第一次调用时If就会出现。表单在每次提交时都会完全重建。如果没有错误,则处理数据并重定向。如果出现错误,请添加captcha字段并再次显示表单。您可能需要设置一个标志,以便表单模板仅尝试显示验证码字段(如果存在)。你可能会让这变得更难。好吧,这不起作用:)因为提交后表单是不可编辑的:)所以答案并不像你建议的那么简单。是的,我花了将近半天的时间,我对symfony并不陌生。