驗證器可以通過在控制器中加入以下代碼被創(chuàng)建。
use CakeValidationValidator; $validator = new Validator();
一旦創(chuàng)建了驗證器,我們就可以使用驗證器實例驗證數(shù)據(jù)。下面的代碼解釋了我們?nèi)绾螢榈卿浘W(wǎng)頁驗證數(shù)據(jù)。
$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());
使用驗證器實例,我們首先調(diào)用notEmpty()方法,確保用戶名不為空。之后,我們用add()方法來添加一個驗證器來驗證正確的email格式。
之后,我們又為密碼域調(diào)用notEmpty()方法,將確認密碼不為空。
修改config/routes.php文件如下。
config/routes.php文件
<?php use CakeCorePlugin; use CakeRoutingRouteBuilder; use CakeRoutingRouter; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { $routes->connect('validation',['controller'=>'Valids','action'=>'index']); $routes->fallbacks('DashedRoute'); }); Plugin::routes();
在src/Controller/目錄下創(chuàng)建一個ValidsController.php文件。復(fù)制以下代碼至其中。
src/Controller/ValidsController.php
<?php namespace AppController; use AppControllerAppController; use CakeValidationValidator; 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目錄下創(chuàng)建一個Valids目錄,并在該Valids目錄下創(chuàng)建一個名為index.ctp的視圖文件。復(fù)制以下代碼至其中。
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(); ?>
通過訪問以下網(wǎng)址執(zhí)行上面的例子-
http://localhost:85/CakePHP/validation
點擊提交按鈕,而無需輸入任何內(nèi)容。您會收到以下頁面。
更多建議: