CakePHP 模型验证无法正常工作

Posted

技术标签:

【中文标题】CakePHP 模型验证无法正常工作【英文标题】:CakePHP Model validation not working properly 【发布时间】:2017-05-22 06:44:12 【问题描述】:

我是 Cakephp 的新手,我创建了一个普通表单来提交名字。 我的表名为“registers。我创建了一个名为 RegistersController (RegistersController.php) 的控制器和一个名为 Register (Register.php) 的模型. 每次我在输入名字后提交时,它仍然显示错误(First name is must),只有当我在不输入任何内容的情况下提交时才会显示错误。接下来我添加了至少 6 个字符的验证。那验证也不起作用。我的意思是,cakephp 没有验证该规则。谁能告诉我我做错了什么?

型号:-

class Register extends AppModel 
//put your code here

//public $useTable = "registers";

public $validate = array(
  'first'=>array(                   
       'minLength' => array(
          'rule' => array('minlength','6'),
          'field' => 'first',
          'message' => 'Minimum 6 characters required'
       ),
       'required' => array(
           'rule'=>array('notEmpty'),
           'required' => true,
           'message' => array('First name is must')
       )        
   )
);

控制器:-

class RegistersController extends AppController 

public $uses = array("Register");
//put your code here
public function index() 
    if($this->request->is('post'))
        //echo "Data";           
        if($this->Register->validates())
            //$this->Register->create();
            //echo "Data validated";
            print_r($this->Register->validationErrors);                
        else
            //echo "Data not validated";
            print_r($this->Register->validationErrors);
         
    

我的看法如下:-

<?php

echo $this->Form->create('Register');

echo $this->Form->input('first');

echo $this->Form->end("Submit");

?>

【问题讨论】:

【参考方案1】:

你错过了这一行

$this-&gt;Register-&gt;set($this-&gt;request-&gt;data);

把它放在验证调用之前,即 $this-&gt;Register-&gt;validates()

【讨论】:

以上是关于CakePHP 模型验证无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

具有两个模型会话的 Cakephp 身份验证组件

SaveField Cakephp 验证

多模型验证 cakephp 2

在 CakePHP 中保存时如何验证关联模型是不是存在

CakePHP 中的多级模型关联

CakePHP - 调用另一个模型导致“SQLSTATE [42000]:语法错误或访问冲突”