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>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 *
出力
何も入力せずに送信ボタンをクリックします。 次の出力が表示されます。