通过cakephp实现字段类型限制

通过cakephp实现字段类型限制,cakephp,Cakephp,这里我已经做了验证,如果任何人在提交后键入超过6位数字,他将收到消息“不超过6位!!”。但在这里,我想做另一个验证,即在发送数据之前,用户将能够在字段中键入超过六个字符。我如何解决它 这是我的模型代码 public $validate = array( 'name' => array( 'rule' => array('notempty'), 'message' => 'Name is requir

这里我已经做了验证,如果任何人在提交后键入超过6位数字,他将收到消息“不超过6位!!”。但在这里,我想做另一个验证,即在发送数据之前,用户将能够在字段中键入超过六个字符。我如何解决它

这是我的模型代码

public $validate = array(
        'name' => array(
                'rule' => array('notempty'),
                'message' => 'Name is required and cannot be empty!!!',
                'required' => true,
        ),
        'ssc_roll' => array(
                'rule' => array('notempty'),
                'message' => 'S.S.C Roll is required and cannot be empty!!!',
                'rule' => array('maxLength', 6),
                'message' => 'Not more than 6 digits!!',
                'required' => true,
        ),
        'hsc_roll' => array(
                'rule' => array('notempty'),
                'message' => 'H.S.C Roll is required and cannot be empty!!!',
                'rule' => array('maxLength', 6),
                'message' => 'Not more than 6 digits!!',
                'required' => true,
        ),
        'date_of_birth' => array(
                'rule' => array('date'),
                'message' => 'Enter a valid date.',
                'required' => true,
        ),
        'mobile' => array(
                'rule' => array('notempty'),
                'message' => 'Enter a valid mobile number.',
                'required' => true,
        )

);
这里是视图代码

<div class="control-group">
                <label class="control-label" for="name">S.S.C Roll *</label>
<div class="controls">
<?php 
echo $this->Form->input('ssc_roll', array('class'=>'input-large'));
echo $this->Form->error('ssc_roll'); ?>
</div>
</div>
<div class="control-group">
<label class="control-label" for="name">H.S.C Roll *</label>
<div class="controls">
<?php echo $this->Form->input('hsc_roll', array('class'=>'input-large'));
echo $this->Form->error('hsc_roll'); ?>
</div>
</div>

不锈钢卷*
高速钢轧辊*

如果要使用允许的新位数验证另一个字段,请更改MaxLength规则以匹配允许的最大位数:

    // 4 digits instead of 6
    'zip_code' => array(
            'rule' => array('notempty'),
            'message' => 'Zip code is required and cannot be empty!!!',
            'rule' => array('maxLength', 4), 
            'message' => 'Not more than 4 digits!!',
            'required' => true,
    ),
    // 10 digits instead of 6
    'phone_number' => array(
            'rule' => array('notempty'),
            'message' => 'Phone number is required and cannot be empty!!!',
            'rule' => array('maxLength', 10),
            'message' => 'Not more than 10 digits!!', 
            'required' => true,
    ),

您可以根据业务逻辑动态更改验证

if ( $userCanInputMoreThanSixCharacter === true ) {
     $this->validator()->getField('ssc_roll')->setRule('maxlength', array(
        'rule' => array('maxlength',10),
        'required' => true
     ));
}
或者,如果条件为true,则可以删除验证

if ( $userCanInputMoreThanSixCharacter === true ) {
     $this->validator()->remove('ssc_roll');
}

给定代码中的6位验证在哪里?无论如何,如果您解决了验证“位数<7”,并且希望您的用户能够写入更多数据,只需删除验证?我刚刚编辑了我的代码。这里是验证代码。这里我希望用户能够在输入字段中键入超过6位数字。这里没有任何验证问题,因为我希望进行验证。我希望在输入字段中进行另一次验证,如邮政编码。如果要在字段中键入邮政编码,则不能键入超过4位数字数字。编辑我的答案,验证来自maxLength属性,只需将其修改为您想要的任何内容。无论如何,只要查看关于这些控件的CakePhP参考,了解可以调整哪些属性以获得所需的验证,这将比每次需要新属性时都询问要快。