CakePHP 3属于ToMany验证
发布时间:2020-12-13 17:48:19 所属栏目:PHP教程 来源:网络整理
导读:我正在努力解决如何使用belongsToMany关系进行验证.即,经典的食谱/配料关系.我想要一个配方,在创建或编辑时始终有一个成分.我的RecipesTable中的验证结果如何?我试过了: $validator-requirePresence('ingredients')-notEmpty('ingredients') 以及 $validat
我正在努力解决如何使用belongsToMany关系进行验证.即,经典的食谱/配料关系.我想要一个配方,在创建或编辑时始终有一个成分.我的RecipesTable中的验证结果如何?我试过了:
$validator->requirePresence('ingredients')->notEmpty('ingredients') 以及 $validator->requirePresence('ingredients._ids')->notEmpty('ingredients._ids') 第二个工作原理是我的表单不验证,但它不会将错误类添加到输入中.我正在设置一个字段名为ingredients._ids的输入. 我也无法在我的测试中创建要传递给$this-> post的数据,以便在我的测试中成功添加记录.我测试中的数据如下: $data = [ 'ingredients' => [ '_ids' => [ '2' ] ]; 当然,我正在测试中使用$this-> post(‘/ recipes / add’,$data); 我没有在测试中传递成分所需的规则. 解决方法
我解决了如何设置验证器的问题.在配方表验证器中:
$validator->add('ingredients','custom',[ 'rule' => function($value,$context) { return (!empty($value['_ids']) && is_array($value['_ids'])); },'message' => 'Please choose at least one ingredient' ]); 但是,验证消息没有显示在表单上,??所以我正在进行isFieldError检查: <?php if ($this->Form->isFieldError('ingredients')): ?> <?php echo $this->Form->error('ingredients'); ?> <?php endif; ?> 我在视图文件中使用多个复选框而不是多选. 有了这个,我在表单上收到验证消息. 正如我想的那样,一旦我找到了验证器,我的测试就出现了.我在上面展示的内容对于在测试中传递数据确实是正确的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |