2017-12-06 5 views
1

validation.xmlで定義された検証ルールに対して任意のパスワードをチェックする方法を知りたいと思います。私は、管理者のユーザーが他の管理者のユーザーを作成できる管理ページを作成しました。匿名ユーザーが/registerページで自分のアカウントに登録したときと同じルールを使用して、これらのユーザーを検証したいと考えています。私が見ることのできるところから、これらのルールはvalidation.xmlで定義されています。ユーザマネージャで作成されたユーザのパスワードを検証するにはどうすればよいですか?

$userManager = $container->get('fos_user.user_manager'); 
$user = $userManager->createUser(); 
$user->setPlainPassword('1'); 
$arrayOfErrors = functionThatValidatesUserPassword($user); 

、あるいは直接、このようなパスワードに関数を呼び出す:

$arrayOfErrors = functionThatValidatesUserPassword('1'); 

私はここにfunctionThatValidatesUserPasswordを置き換えるために何を使うべき

だから基本的に私はこのような何かをしたいですか?

は私がバリデータサービスが動作するかもしれないと思ったが、私は

$validator = $this->get('validator'); 
$errors = $validator->validate($user); 
print_r($errors);exit; 

をしようとすると、私はエラーの空のリストを取得します。 /registerページに同じパスワードのアカウントに登録すると、「パスワードが短すぎます」というエラーが表示されることを期待していました。

私はSymfony 3.4とFosUserBundle 2.0を使用しています。


私の質問への回答を探している間、私はvalidation.xmlファイルで定義されたルールを上書きする方法を説明する以下の2つのポストを見つけました。

私は、検証ルールを上書きすることを計画んが、今の私はちょうどFosUserBundleが付属して組み込みのルールを使用して自分のパスワードを検証したいです。

+0

@bangbambangはいそれは申し訳ありませんが、眠くなったと誤って私の最後のコメントを削除 –

+0

私はカスタムvalidation.xmlファイルで作成したルールを使用して、正しいです:私のコードは次のようになりますので、私は、登録グループを使用しました。 'createUser()'がエンティティを返すと仮定すると、バリデータサービス*は動作するはずです。 SFのどのバージョンを使用していますか? – bangbambang

+0

@bangbambang Symfony 3.4、FosUserBundle 2.0 –

答えて

0

私は私の問題の答えを見つけました。 FOSUserBundleに組み込まれているvalidation.xmlの制約条件はvalidation groupsです。既定では、validate関数は、どのグループにも属さない制約の検証のみを行います。チェックする制約を含むグループの配列を取り込む、validate関数の3番目のパラメーターがあります。だからあなたがしなければならないことは、チェックしたい制約を含むグループを渡すことだけです。たとえば、パスワードフィールドは、Registration、Profile、ResetPassword、ChangePasswordというグループに属します。

$userManager = $this->get('fos_user.user_manager'); 
$user = $userManager->createUser(); 
$user->setPlainPassword('1'); 
$validator = $this->get('validator', null, array("Registration")); 
$errors = $validator->validate($user); 
関連する問題