繁体   English   中英

自定义验证消息不适用于Symfony 3

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM