CakePHP3中的条件表单验证

CakePHP3中的条件表单验证,php,validation,cakephp,cakephp-3.0,Php,Validation,Cakephp,Cakephp 3.0,我想验证validationDefault()函数中的一些字段,但不完全是因为条件,但没有找到任何解决方案 例如: public function validationDefault(Validator $validator) { $validator ->requirePresence('title', 'create') ->notEmpty('title'); $validator -&

我想验证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"
}
当我没有发送正确的但根据情况是错误的事件时。 在创建新实体时使用fieldList,但它不起作用。


谢谢

您需要条件验证

摘自文件:

定义验证规则时,可以使用on键定义何时应用验证规则。如果未定义,则始终应用该规则。其他有效值为create和update。使用这些值之一将使规则仅应用于创建或更新操作

例如,请注意部分的

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

使用不同的验证集谢谢,是的,我可以使用不同的验证集,但我认为这不是正确的解决方案,fieldList可能是一个解决方案,但没有找到任何相关内容阅读文档有什么问题?习惯于阅读整个文档页面,而不仅仅是片段。它也在右边的页面内容列表中。