目录

CakePHP - 创建验证器( Creating Validators)

可以通过在控制器中添加以下两行来创建验证器。

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()方法添加了密码字段的验证,这将确认密码字段不能为空。

例子 (Example)

在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.ctpView文件。 复制该文件中的以下代码。

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

输出 (Output)

单击提交按钮而不输入任何内容。 您将收到以下输出。

验证
↑回到顶部↑
WIKI教程 @2018