我正在使用 CakePHP 3.5.5。
我对自定义验证规则感到震惊。在我看来,我有国家和州的领域。如果国家字段的值为 US,那么我们将 state 字段设为必填,否则我们不需要。我在我的 UsersTable.php 中放置了一个自定义验证规则,如下所示:
public function validationDefault(Validator $validator) {
$validator
->add('state', 'custom', [
'rule' => [$this,'validate_state'],
'provider' => 'custom',
'message' => 'Please enter state'
]);
}
并创建了 validate_state 函数,如下所示:
public function validate_state($value, $context) {
//debug($value, $context);die;
//if state is us)
//if state is not empty return true;
//if state is empty return false;
//else return true;
}
但它根本不起作用。如果我使用此规则,它唯一要做的就是显示“此字段不能留空”消息。我知道如果您为字段创建了验证器规则,CakePHP 会假设它自己运行notEmpty 。但我的问题是在检查 notEmpty 方法之前检查另一个我需要使用自定义函数的字段的值之前,我不能规则字段值 true 或 false。但在我的情况下,如果我不使用 notEmpty 方法,它既不会进入自定义函数 validate_state 也不会显示我在此规则中使用的自定义消息。
在将表单请求数据发送到验证器之前,您是否知道一种更好的方法来做到这一点?