[英]Custom validaton messages not working on Symfony 3
我的用户类中有以下声明(Symfony 3,这是一个实体类):
/**
* @ORM\Column(type="string", length=128, unique=true)
* @Assert\NotBlank (
* groups={"registration"},
* message = "test"
* )
* @Assert\Email(
* message = "The email '{{ value }}' is not a valid email.",
* groups={"registration"}
* )
*/
private $email;
一切正常,除了我无法设置消息外,显示默认的“此值不应为空”,而不是消息(例如“测试”)。
是的,我有
framework:
validation: { enable_annotations: true }
在我的config.yml中
编辑:是的,我通过执行以下操作清除了缓存:
sudo php bin/console cache:clear
Edit2:请注意,实际上确实要进行验证,Symfony看到电子邮件是必需的,如果我将该字段保留为空,则会显示一条消息,只是它不是我的消息,Symfony某种程度上看不到“消息”部分。
Edit3:现在,在删除groups = {“ registration”}部分并进行更改之后(在控制器中)
$errors = $validator->validate($user, null, array('registration'));
至
$errors = $validator->validate($user, null);
(删除数组('registration'))
显示正确的消息。 但是,这不是解决方案。 我需要使用组。
编辑4:我会发疯的...
如果我没有输入电子邮件,然后:
$validator = $this->get('validator');
$errors = $validator->validate($user, null, array('registration'));
dump($errors);
(注意“ dump”函数调用),然后我看到页面上显示了一条错误消息(此值不应为空),但是...当我进入事件探查器->调试页面(底部的开发工具)时,我可以看到正确的消息(我的消息)...
此外,在探查器->表单错误中,此错误消息是列表上的错误消息(仅作为一项),但是...它表示它引用的字段名为“ plainPassword”,该字段不在表单中,并且不属于“注册” ”分组,因此一开始就不应对其进行验证。
那里发生了什么事?
你可以试试这个吗?
/**
* @ORM\Column(type="string", length=128, unique=true)
*
*
* @Assert\NotBlank(
* message = "The box cant be left blank")
*
*
* @Assert\Email(
* message = "The email '{{ value }}' is not a valid email."
*
* )
*/
private $email;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.