Cakephp-creating-validators

提供:Dev Guides
移動先:案内検索

CakePHP-バリデーターの作成

バリデーターを作成するには、コントローラーに次の2行を追加します。

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

データの検証

バリデーターを作成したら、バリデーターオブジェクトを使用してデータを検証できます。 次のコードは、ログインWebページのデータを検証する方法を説明しています。

$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()*メソッドをチェーンして、適切な電子メール形式の検証をもう1つ追加しました。

その後、notEmpty()メソッドを使用してパスワードフィールドの検証を追加し、パスワードフィールドが空であってはならないことを確認します。

次のプログラムに示すように、config/routes.phpファイルを変更します。

*config/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();
*src/Controller/ValidsController.php* に *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);
      }
   }
?>
*src/Template* に *Valids* ディレクトリを作成し、そのディレクトリの下に *index.ctp* という *View* ファイルを作成します。 そのファイルに次のコードをコピーします。
*src/Template/Valids/index.ctp*
<?php
   if($errors){
      foreach($errors as $error)
      foreach($error as $msg)

      echo '<font color = "red">'.$msg.'</font&gtl';
   } 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 *

出力

何も入力せずに送信ボタンをクリックします。 次の出力が表示されます。

検証