【发布时间】:2014-07-15 14:50:40
【问题描述】:
伙计们,
我正在尝试确保至少填充两个字段(姓氏或电子邮件)中的一个。每个字段也有多个规则。我正在使用 CakePHP 2.4.2 版。
我目前遇到的问题是,在多次更新和/或移动使用“last”、“allowEmpty”、“required”等之后,这些字段根本没有验证,或者填充字段时未执行所有规则。
非常感谢任何有关如何修改以下代码以实现以下行为的建议: 1. 必须填写两个字段之一; 2. 附加到每个字段的其他规则也必须有效(即,如果姓氏通过,则它必须介于 2 到 45 个字符之间,并且只能包含字母数字)
这是模型代码:
public $validate = array(
'last_name'=> array(
'needOne' => array (
'required' => FALSE,
'allowEmpty' => TRUE,
'last' => TRUE,
'rule' => array('checkOne','last_name'),
'message' => 'You must enter at least a contact name or email address.'
),
'alphaNumeric' => array(
'rule' => 'alphaNumeric',
'message' => 'Alphabets and numbers only'
),
'between' => array(
'rule' => array('between', 2, 45),
'message' => 'Between 2 to 45 characters'
)
),
'email' => array(
'needOne' => array (
'required' => FALSE,
'allowEmpty' => TRUE,
'last' => TRUE,
'rule' => array('checkOne','email'),
'message' => 'You must enter at least a contact name or email address.'
),
'emailAddress' => array (
'last' => TRUE,
'rule' => array('email', FALSE),
'message' => 'A valid Email address is required'
)
)
);
// Ensure at least the last name or email field value is provided
function checkOne($field) {
if(!empty($this->data[$this->User]['last_name']) ||
!empty($this->data[$this->User]['email'])){
return true;
} else {
return false;
}
}
提前致谢!
【问题讨论】:
标签: validation cakephp