CakePHP 3中的条件表单验证

时间:2016-09-16 09:15:02

标签: php validation cakephp cakephp-3.0

我想验证validationDefault()函数中的某些字段并非全部因为条件但未找到任何解决方案。

示例:

public function validationDefault(Validator $validator) {

    $validator
            ->requirePresence('title', 'create')
            ->notEmpty('title');

    $validator
            ->requirePresence('inquiry')
            ->allowEmpty('inquiry');
    $validator
            ->requirePresence('dosage')
            ->allowEmpty('dosage');

    $validator
            ->requirePresence('dosage_occurance')
            ->integer('dosage_occurance')
            ->allowEmpty('dosage_occurance');

    return $validator;
}

注意:来自两个不同形式的响应首先包含(标题和查询)其他包含(标题,剂量和剂量)。 我想从validationDefault()验证它,但它给我错误

"dosage_occurance": {
  "_required": "This field is required"
}

当我没有发送正确的dose_occurance但是根据条件它是错误的。 在创建新实体时使用fieldList,但它无效。

由于

1 个答案:

答案 0 :(得分:1)

您需要条件验证。

取自文件:

  

定义验证规则时,您可以使用on键来定义何时应用验证规则。如果未定义,则始终应用规则。其他有效值是创建和更新。使用其中一个值将使规则仅适用于创建或更新操作。

Read the whole documentation page.

从那里取得的例子,注意on部分。

$validator->add('picture', 'file', [
    'rule' => ['mimeType', ['image/jpeg', 'image/png']],
    'on' => function ($context) {
        return !empty($context['data']['show_profile_picture']);
    }
]);