【发布时间】:2017-05-02 09:54:18
【问题描述】:
我正在尝试在 CakePHP 3 中编写一个验证规则来检查是否设置了前名和姓氏或公司名称。
验证器:
$validator
->add('prename', 'custom', [
'rule' => [$this, 'validateName'],
'message' => __('Prename and lastname OR company name must be set.')
]);
$validator
->add('lastname', 'custom', [
'rule' => [$this, 'validateName'],
'message' => __('Prename and lastname OR company name must be set.')
]);
$validator
->add('name', 'custom', [
'rule' => [$this, 'validateName'],
'message' => __('Prename and lastname OR company name must be set.')
]);
规则定义:
public function validateName($check, array $context)
{
if((!empty($context['data']['prename']) && !empty($context['data']['lastname'])) || !empty($context['data']['name'])){
return true;
} else {
return false;
}
}
但验证的行为与预期不符。如果我输入公司名称,我会收到 prename 和 lastname 的验证错误,表明这些字段是必需的。当我输入前名和姓氏时,它说公司名称是必需的。
我做错了什么?
【问题讨论】:
-
如果你想让这些文件为空,请使用 allowEmpty()
-
这不是我想要的,但还是谢谢。
标签: php validation cakephp cakephp-3.0