我正在使用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。那么,我哪里错了?
答案 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类名称和文件名,并确保它们是单数且匹配且没有拼写错误。