Php Symfony表单,冒泡错误
我有一个表单错误冒泡的问题。 我表单中的一个字段定义如下:Php Symfony表单,冒泡错误,php,symfony,Php,Symfony,我有一个表单错误冒泡的问题。 我表单中的一个字段定义如下: $formBuilder->add('title','text', 'required' => true, 'error_bubbling' => false, ) ) 我想在此字段中添加一个如下验证程序: /** * @Assert\True(message = "Bad title.") */ public function getTitleCorrect() { /* ..
$formBuilder->add('title','text',
'required' => true,
'error_bubbling' => false,
)
)
我想在此字段中添加一个如下验证程序:
/**
* @Assert\True(message = "Bad title.")
*/
public function getTitleCorrect()
{
/* ... */
return false;
}
它工作正常,但错误消息显示在窗体顶部,而不是字段行中
在细枝模板中,此错误消息由{{form_errors(form)}}
作为全局错误呈现。当我使用{{form_errors(form.title)}}
时,它不会打印我的错误
如何更改错误的分配?只有当验证程序附加到相应的属性时,消息才会附加到字段。 您的验证器附加到类的一个方法,所以错误确实是全局的 你应该这样做:
use ...\TitleValidator as AssertTitleValid;
class MyEntity
{
/**
* @AssertTitleValid
*/
private $title;
}
并创建自己的TitleValidator类。默认情况下,“错误冒泡”为
false
,除非设置为true
或表单为复合
此外,如果表单字段和已验证属性/方法之间存在一些不匹配的情况(如示例中所示),或者如果使用不同的大小写(snake\u case
用于表单字段,而$camelCase
用于已验证属性),则可能会出现错误
在这种情况下,您可以在表单类中使用“错误映射”:
/**
* @param OptionsResolver $resolver
*
* @throws AccessException
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => YourEntity::class,
'error_mapping' => [
'entityProperty' => 'form_field_1',
'entityMethod' => 'form_field_2',
],
]);
}