2016-09-10 9 views
2

検証グループが動作していないようです。しかし、私は次のように異なるの検証グループを指定する方法を見つけ出すように見えるカント、デフォルトのグループのために働く:symfony検証グループ(フォームではありません)

$errors = $validator->validate($entity); 

Iてきた私がテストしていますシンプルなエンティティ:

/** 
* 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'); 

しかし、これを行う方法があるはずですか?

ファイル: /vendor/symfony/symfony/src/Symfony/Component/Validator/Validator/ValidatorInterface.php

ライン: 公共

+0

security.ymlまたはvalidation.ymlで検証グループを定義する必要があると思います – Nickolaus

答えて

1

実際、Symfony3検証グループを使用しての正しい方法は、配列としてそれらをリストすることです:ところで

$errors = $validator->validate($entity, null, ['login']); 

、ご使用のケースに応じて、各プロパティのDefaultグループを設定し、ちょうど使用する必要はないかもしれませんグループの代わりにloginのグループ。グループDefaultでエンティティを検証すると、クラス名に等しいグループ名のアサーションが自動的に含まれます(Login)。詳細については、http://symfony.com/doc/current/validation/groups.html

0

symfonyのコードに掘り後、私は次を発見しましたfunction validate($ value、$ constraints = null、$ groups = null);これは、

私は、この変更のであれば:これに

$errors = $validator->validate($entity, 'login'); 

$errors = $validator->validate($entity, null, 'login'); 

をそれは働きます!

関連する問題