![](/img/trans.png)
[英]Cakephp 2.+ $this->Model->validates(); always return true
[英]cakephp $this->validates multiple recode set many
我正在尝试验证表单上动态添加的控件。 我有一份注册表,可以让用户添加1到5个教育信息。 我正在使用Jquery处理添加删除字段。
HTML代码
<input name="data[Usereducation][0][schoolname]" id="Usereducation0Schoolname" type="text">
<input name="data[Usereducation][1][schoolname]" id="Usereducation1Schoolname" type="text">
...................
提交后,生成数组as ..
Array ( [0] => Array ( [schoolname] => ) [1] => Array ( [schoolname] => ) [3] => Array ( [schoolname] => )
我的模态具有以下验证。
public $validate = array(
'schoolname'=>array(
'School Name'=>array(
'rule'=>'notEmpty',
'message'=>'Please enter your School Name.'
)
)
);
在控制器中,我试图用$this->Usereducation->validates();
来验证它们$this->Usereducation->validates();
但是什么也没发生。 有关如何处理此问题的任何建议?
方法1:
使用saveMany一次验证多个记录
在您的控制器中,只需使用saveMany/saveAll
方法而不是validates
,因为您有太多要验证的记录。
if ($this->UserInformation->saveMany($this->request->data)) {
// do your stuff
} else {
// check the validation errors here.
pr($this->UserInformation->validationErrors);exit;
}
并且您的$this->request->data
应该像这样
Array(
'Userinformation' => array(
0 => array(
'schoolname' => 'school 0'
),
1 => array(
'schoolname' => 'school 1'
),
2 => array(
'schoolname' => 'school 2'
),
)
)
方法2:
这是一次验证多个记录的另一种方法:
如果您想验证记录,并且不想执行保存操作,则很有用。
$this->ModelName->validateMany($data['ModelName']);
这里$data
应该如下所示
$data = array(
'ModelName' => array(
'field1' => 'value1'
'field2' => 'value2'
'field3' => 'value3'
)
);
并且您可以使用$this->ModelName->validationErrors
访问验证错误(验证失败)
就你而言
if ($this->UserInformation->validateMany($this->request->data['Userinformation'])) {
// do your stuff
} else {
// check the validation errors here.
pr($this->UserInformation->validationErrors);exit;
}
并且您的$this->request->data
应该像这样
Array(
'Userinformation' => array(
0 => array(
'schoolname' => 'school 0'
),
1 => array(
'schoolname' => 'school 1'
),
2 => array(
'schoolname' => 'school 2'
),
)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.