CakePHP 3 - Отображение всех сообщений об ошибках и buildRules в контроллере

У меня есть эта модель/таблица/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?

Любая помощь будет оценена по достоинству. Заранее спасибо!

Мир! хD


person Object Manipulator    schedule 07.02.2016    source источник


Ответы (2)


Помните, что проверка — это двухэтапный процесс, сначала проверяются все правила проверки (во время сортировки — т. е. patchEntity()), и только если они проходят, используются правила в buildRules. Это означает, что уникальное правило электронной почты не будет выполняться до тех пор, пока не будут пройдены все стандартные правила проверки.

Если вам нужна немедленная обратная связь для уникальности электронной почты, вы также можете добавить правило проверки уникальности электронной почты в валидаторе.

person Megs Lalk    schedule 18.02.2016

Вы можете использовать это, чтобы заставить Cake проверять правила, даже если проверка не удалась:

$this->Users->checkRules($user);
person Greg Schmidt    schedule 05.09.2017