首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >cakephp 3.x中的复选框验证

cakephp 3.x中的复选框验证
EN

Stack Overflow用户
提问于 2015-12-15 18:56:17
回答 3查看 2.1K关注 0票数 0

如何为应在cakephp 3.0中选中的复选框创建验证

cakephp 2.x中,验证过程如下:

代码语言:javascript
复制
'accept_terms' => array(
        'rule' => array('comparison', '!=', 0),
        'required' => true,
        'message' => 'You must agree to the terms',
        'on' => 'create',
    ),

我想把它转换成cakephp 3.x

EN

回答 3

Stack Overflow用户

发布于 2015-12-15 19:40:29

没有用于验证复选框的特殊规则。您要做的是验证字段在create上是否为notEmpty:-

代码语言:javascript
复制
$validator
    ->requirePresence('accept_terms')
    ->notEmpty('accept_terms', 'You must agree to the terms', 'create');

这可以在official docs on Validation中找到。可用验证规则的完整列表可以是found in the API docs

票数 0
EN

Stack Overflow用户

发布于 2016-03-03 12:10:47

您可以使用自定义方法来验证您的复选框。我真的喜欢这样。这对我来说是可以的。

代码语言:javascript
复制
 public function validationBooking(Validator $validator)
    {

        $validator->add('accept_terms', 'custom', [
            'rule' => [$this, 'AcceptTerm'],
            'message' => 'You must agreed Term and Condition'
        ]);
        return $validator;
    }
        //make function
        public function AcceptTerm($value,$context){
                if($context['data']['accept_terms']==1)
                    return true;
                else
                    return false;
            }
票数 0
EN

Stack Overflow用户

发布于 2019-04-02 17:09:22

您可以通过requirePresence-Validation-Method检查是否选中了复选框。

在您的模型中:

代码语言:javascript
复制
$validator
        ->boolean('accept_legalnotice')
        ->requirePresence('accept_legalnotice', true, 'You have to accept.');

要完成此工作,您需要禁用由form-helper生成的复选框的隐藏字段。

在您的视图中:

代码语言:javascript
复制
echo $this->Form->checkbox('accept_legalnotice', ['hiddenField' => false]);

https://book.cakephp.org/3.0/en/views/helpers/form.html#options-for-select-checkbox-and-radio-controls

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34287381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档