繁体   English   中英

cakephp $ this-> validate多个重新编码集

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM