0

我正在尝试验证表单上动态添加的控件。我有一个注册表单,用户可以在其中添加 1 到 5 个教育信息。我正在使用 Jquery 来处理添加删除字段。

HTML 代码

<input name="data[Usereducation][0][schoolname]" id="Usereducation0Schoolname" type="text">
<input name="data[Usereducation][1][schoolname]" id="Usereducation1Schoolname" type="text">
...................

在提交时,这会将数组生成为..

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();

但什么也没有发生。有关如何处理此问题的任何建议?

4

1 回答 1

0

方法一:

使用 saveMany 一次验证多条记录

在您的控制器中,只需使用saveMany/saveAllmodel 方法而不是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'
        ),
    )
)

方法二:

这是一次验证多条记录的另一种方法:

如果您想验证记录,并且不想执行保存操作,它很有用..

$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'
        ),
    )
)
于 2013-11-02T07:51:32.967 回答