似乎无法使验证组正常工作。它适用于默认组,但我似乎无法弄清楚如何在以下内容中指定不同的验证组:
$errors = $validator->validate($entity);
我是一个简单的实体,我正在测试:
/**
* Class Login
* @package AppBundle\Entity
*/
class Login
{
/**
* @Assert\NotBlank(
* message="not.blank",
* groups={"Default", "login"}
* )
*
* @Assert\Email(
* message="email",
* groups={"Default", "login"}
* )
*/
public $email;
/**
* @Assert\NotBlank(
* message="not.blank",
* groups={"Default", "login"}
* )
*/
public $password;
}
如果我添加这样的参数,它会抱怨:
$errors = $validator->validate($entity, 'login');
但是必须有办法做到这一点,对吗?
答案 0 :(得分:1)
实际上,使用Symfony3验证组的正确方法是将它们列为数组:
$errors = $validator->validate($entity, null, ['login']);
顺便说一句,根据您的使用情况,您可能不需要为每个媒体资源设置Default
群组,而只使用群组Login
代替login
。然后,当您使用组Default
验证实体时,它会自动包含组名等于类名的断言,在您的情况下为Login
。有关详细信息,请参阅:http://symfony.com/doc/current/validation/groups.html
答案 1 :(得分:0)
在深入研究Symfony代码后,我发现了以下内容:
文件: /vendor/symfony/symfony/src/Symfony/Component/Validator/Validator/ValidatorInterface.php
行: public function validate($ value,$ constraints = null,$ groups = null);
所以如果我改变了这个:
$errors = $validator->validate($entity, 'login');
对此:
$errors = $validator->validate($entity, null, 'login');
有效!