Cakephp 2.x验证字段列表

时间:2014-01-27 20:40:28

标签: php cakephp

我正在使用cakephp编写应用程序,但方法'MyModel' - > validates(array('fieldList)=> array('myfield'))不起作用。我的模型中的相关验证规则被忽略。

我的控制器功能如下:

function _processaddbasic(){
$this->Caught->set($this->data);
if ($this->Caught-validates(array('fieldList' => array('type_id')))){
   return true;
}
return false;
}

我的模型部分如下:

public $validate = array(
'type_id'=> array(
            'rule' => 'notEmpty',
            'required' =>true,
            'allowEmpty' => false,
)
)

执行带有无效(空)数据的代码后,控制器中的相关部分将始终返回true。那么,我哪里错了?

2 个答案:

答案 0 :(得分:0)

使用$errors = $this->ModelName->invalidFields();

检查错误

对于参考:http://book.cakephp.org/2.0/en/models/data-validation/validating-data-from-the-controller.html

答案 1 :(得分:0)

一些建议:

建议1

您的代码中似乎有拼写错误。

if ($this->Caught-validates(array('fieldList' => array('type_id')))){

应该是

if ($this->Caught->validates(array('fieldList' => array('type_id')))){

(它缺少'>')

建议2

如果你使用CakePhp 2.x,最好有

$this->Caught->set($this->request->data);

而不是

$this->Caught->set($this->data);

建议3

您的模型可能会被程序中其他调用的数据“弄脏”。要在向其添加数据之前重置它,您必须致电create; see docs;

$this->Caught->create();

建议4

检查您的Model类名称和文件名,并确保它们是单数且匹配且没有拼写错误。