我有一个具有名字,姓氏和组织/公司名称字段的模型。用户必须输入名字和姓氏或组织名称。
问题是我的自定义验证方法(“validateNames”)从未被调用过。出于调试目的,我在那里有一个“die”语句,而不是真正的验证逻辑 - 但是永远不会达到die语句。
我的模型看起来像:
class Contact extends AppModel {
public $validate = array(
'first_name' => array(
'rule' => 'validateNames',
'allowEmpty' => true,
'required' => false
),
'last_name' => array(
'rule' => 'validateNames',
'allowEmpty' => true,
'required' => false
),
'organization' => array(
'rule' => 'validateNames',
'allowEmpty' => true,
'required' => false
)
);
public function validateNames($check) {
die('here');
}
}
问题在于,只要我在验证规则中有'allowEmpty',就不会调用我的自定义验证方法(并且永远不会达到'die'语句)。但是如果我删除'allowEmpty',那么每个INPUT字段都会添加一个HTML“required”属性(即使我有'required'=> false) - 这会阻止提交表单,除非填写所有三个字段,当实际只需要一个(组织)或两个(名字和姓氏)时。
答案 0 :(得分:1)
如果要使用相同的字段调用2次或更多次验证,则必须传入数组
像
class Contact extends AppModel {
public $validate = array(
'first_name' => array(
'rule1' => array(
'rule' => 'validateNames',
'message' => 'Must be a valid first name',
'allowEmpty' => true
),
),
'last_name' => array(
'rule1' => array(
'rule' => 'validateNames',
'message' => 'Must be a valid names',
'allowEmpty' => true
),
'organization' => array(
'rule' => 'validateNames',
'allowEmpty' => true,
'required' => false
)
);
public function validateNames($check) {
die('here');
}
}
请告诉我是否可以为您提供更多帮助。
答案 1 :(得分:1)
从验证规则中删除allowEmpty选项,并在视图中输出字段时禁用所需选项。试试这个:
<强>模型强>:
class Contact extends AppModel {
public $validate = array(
'first_name' => array(
'rule' => 'validateNames'
),
'last_name' => array(
'rule' => 'validateNames'
),
'organization' => array(
'rule' => 'validateNames'
)
);
public function validateNames($check) {
die('here');
}
}
查看强>:
echo $this->Form->input('first_name', array('required' => false));
echo $this->Form->input('last_name', array('required' => false));
echo $this->Form->input('organization', array('required' => false));