我有一个模型,其中包含名字、姓氏和组织/公司名称字段。用户必须输入名字和姓氏或组织名称。
问题是我的自定义验证方法(“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' => false)——这会阻止表单被提交,除非所有三个字段都已填写,当实际上只需要一个(组织)或两个(名字和姓氏)时。