我正在尝试创建自定义验证规则,以便在选中复选框时,需要填写输入字段才能继续下一页。如果未选中,则不需要输入字段。
这是我在View中的代码:
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字段是我正在尝试验证的输入字段。我试过玩'必需','allowEmpty'等没有运气。如果有人能直接指出我,那就太好了,谢谢!
答案 0 :(得分: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;
}
我正在处理自定义验证函数中的错误消息 - 而不是在验证数组中。如果这不起作用,请告诉我!