加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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; ?>

我在视图文件中使用多个复选框而不是多选.

有了这个,我在表单上收到验证消息.

正如我想的那样,一旦我找到了验证器,我的测试就出现了.我在上面展示的内容对于在测试中传递数据确实是正确的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读