Учебники

CakePHP — Создание валидаторов

Валидатор можно создать, добавив следующие две строки в контроллер.

use Cake\Validation\Validator;
$validator = new Validator();

Проверка данных

После того, как мы создали валидатор, мы можем использовать объект валидатора для проверки данных. Следующий код объясняет, как мы можем проверить данные для веб-страницы входа.

$validator->notEmpty('username', 'We need username.')->add('username',
   'validFormat', ['rule' => 'email','message' => 'E-mail must be valid']);

$validator->notEmpty('password', 'We need password.');
$errors = $validator->errors($this->request->data());

Используя объект $ validator, мы сначала вызвали метод notEmpty (), который гарантирует, что имя пользователя не должно быть пустым. После этого мы добавили метод add (), чтобы добавить еще одну проверку правильности формата электронной почты.

После этого мы добавили проверку поля пароля методом notEmpty (), который подтвердит, что поле пароля не должно быть пустым.

пример

Внесите изменения в файл config / rout.php, как показано в следующей программе.

конфиг / routes.php

<?php
   use Cake\Core\Plugin;
   use Cake\Routing\RouteBuilder;
   use Cake\Routing\Router;

   Router::defaultRouteClass('DashedRoute');
   Router::scope('/', function (RouteBuilder $routes) {
      $routes->connect('validation',['controller'=>'Valids','action'=>'index']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();

Создайте файл ValidsController.php в src / Controller / ValidsController.php . Скопируйте следующий код в файл контроллера.

SRC / Controller / ValidsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\Validation\Validator;

   class ValidsController extends AppController{
      public function index(){
         $validator = new Validator();
         $validator->notEmpty('username', 'We need username.')
            ->add('username', 'validFormat', ['rule' => 'email','message' 
            => 'E-mail must be valid']);
         
         $validator->notEmpty('password', 'We need password.');
         $errors = $validator->errors($this->request->data());
         $this->set('errors',$errors);
      }
   }
?>

Создайте каталог Valids в src / Template и в этом каталоге создайте файл View с именем index.ctp . Скопируйте следующий код в этот файл.

SRC / Template / Valids / index.ctp

<?php
   if($errors){
      foreach($errors as $error)
      foreach($error as $msg)
      
      echo '<font color = "red">'.$msg.'</font>l';
   } else {
      echo "No errors.";
   }

   echo $this->Form->create("Logins",array('url'=>'/validation'));
   echo $this->Form->input('username');
   echo $this->Form->input('password');
   echo $this->Form->button('Submit');
   echo $this->Form->end();
?>

Выполните приведенный выше пример, посетив следующий URL — http: // localhost: 85 / CakePHP / validation

Выход

Нажмите на кнопку «Отправить», ничего не вводя. Вы получите следующий вывод.