1

すべてのエラー メッセージと buildRules を指定したこの Model/Table/UsersProfilesTable.php があります。

私の意図は、データを保存しようとしているときに、コントローラーのすべての検証エラーを一覧表示することです。

コードは後述します。

 // Model/Table/UsersProfilesTable.php 

 class UserProfilesTable extends Table{

    public function validationDefault(Validator $validator){

        $validator  =   new Validator();

        $validator
            ->notEmpty("first_name","First name cannot be empty.")
            ->requirePresence("first_name")
            .......
            ->notEmpty("email", "Email cannot be empty.")
            ->requirePresence("email")
            ->add( "email", "email",[
                "rule" => ["email", true],
                "message" => "Enter a valid e-mail."
            ]);



        return $validator;  
    }

    public function buildRules(RulesChecker $rules){

        $rules->add($rules->isUnique(['email'], 'Email should be unique'));

        return $rules;
    }

    //UsersController.php

      $user =   $this->Users->patchEntity($user, $this->request->data);

      if($this->Users->save($user)){
        // Success msg
      }

      if($user->errors()){
         // This shows all the error messages except the one specified in the  buildRules for unique email.
         pr($user->errors()); 
      }

buildRules メソッドで指定されたメッセージを含むすべての検証エラーを一覧表示できる方法を誰か考えてもらえますか?

どんな助けでも大歓迎です。前もって感謝します!

平和!xD

4

2 に答える 2

4

検証は 2 フェーズのプロセスであることに注意してください。最初にすべての検証ルールがチェックされ (マーシャリング中、つまりpatchEntity())、合格した場合にのみ、buildRules のルールが使用されます。これは、標準の検証ルールがすべてパスするまで、一意の電子メール ルールが実行されないことを意味します。

メールの一意性についてすぐにフィードバックが必要な場合は、バリデーターにメールの一意性の検証ルールを追加することもできます。

于 2016-02-18T18:35:44.923 に答える