0

我正在尝试为选中复选框创建自定义验证规则,需要填写输入字段才能进入下一页。如果未选中,则不需要输入字段。

这是我在视图中的代码:

echo $this->Form->inputs(array(
    'legend'=>'Certifications',
    'rn_box'=>array(
        'type'=>'checkbox',
        'label'=>'RN',
        'value' => $results['Education']['rn_box']
        ),
    'rn_number'=>array(
        'label'=>'RN Number:',
        'value' => $results['Education']['rn_number']
        ),

));

在我的模型中,我创建了一个函数:

public function rnCheck () {
if ($this->data['Education']['rn_box'] == '0') {
    return false;
}
    return true;

}

public $validate = array(
    'rn_number' => array(
        'rnCheck'=>array(
            'rule'=>'rnCheck',
            'message'=>'Please Provide a Number'
            ),
        ),

);

如果选中,复选框返回值 1,未选中返回值 0。rn_number 字段是我要验证的输入字段。我试过玩'required'、'allowEmpty'等,但没有运气。如果有人能直接指出我的正确方向,那就太好了,谢谢!

4

1 回答 1

2

您可能只需在 rn_number 的函数回调中处理这一切。我还将调用函数和规则名称 rn_number 以避免任何混淆。

例如,将您的验证数组更改为:

public $validate = array(
    'rn_number' => array(
        'rn_number'=>array(
            'rule'=>'rn_number'
        ),
    ),
);

然后您的自定义验证函数可能如下所示:

public function rn_number () {
    if ($this->data['Education']['rn_box'] == 1) {
            if($this->data['Education']['rn_number'] == '')
                  $errors[] = "Please enter your RN Number.";
    }

    if (!empty($errors))
        return implode("\n", $errors);

    return true;
}

我在自定义验证函数中处理错误消息 - 而不是在 validate 数组中。如果这不起作用,请告诉我!

于 2012-08-26T02:34:51.220 回答