记录一个关于CI的表单验证规则-HXC博客
  •  首页
  •  游戏/动漫
  •  日记/生活
  •  时间轴
  •  留言板
  • 
    记录一个关于CI的表单验证规则
     作者:转载  发布时间:2017-11-12 17:44:53  访客:119

    博主觉得在某些方面,CI框架要优于thinkphp的(当然是针对于5之前的版本,5的版本不好比较),喜欢CI框架的朋友,往往都很喜欢它的轻便,当然还有它很方便实用的表单验证功能,真的很方便。

    484567.png

    首先当然是要加载表单验证类库了(form_validation)

    $this->load->library('form_validation');

    然后是设计一个表单

    <?php echo form_open('',['class' =>'a','id' =>'b'])?><!--还有个form_open_multipart是针对有上传的-->

    比如下面的是截取的某个片段:

    <?php echo form_open('',['class'    =>'main-box','id'   =>'form_sign'])?>
    <h3 class="form-header">欢迎注册</h3>
     
    <div class="form-group">
        <label for="email">邮箱:</label>
        <input type="text" class="form-control" id="email" name="email" placeholder="Enter email" value="<?php echo set_value('email')?>"> 
        <!--此处value是将用户输入的值填充进来,提高体验度-->
        <?php echo form_error('email')?>  <!--可以可以显示错误信息-->
    </div>
     
    <div class="form-group">
        <label for="name">昵称:</label>
        <input type="text" class="form-control" id="nickname" name="nickname" placeholder="Name" value="<?php echo set_value('nickname')?>">
         <!--此处value是将用户输入的值填充进来,提高体验度-->
        <?php echo form_error('nickname')?> <!--可以可以显示错误信息-->
    </div>

    当然重头戏还是在控制器中:

    if ($this->input->post()) {//判断post提交
        $this->load->library('form_validation');//加载表单验证类库
        $param = $this->input->post();
        //is_unique[Member.email]这个判断输入的值在表中是否唯一,博主觉得很好用,格式is_unique[表.字段]
        $this->form_validation->set_rules('email', '*邮箱', 'trim|required|valid_email|is_unique[Member.email]');
        $this->form_validation->set_message('is_unique', '{field}已被注册,请换一个吧!');//对is_unique设置错误提示,{field}代表上面的 *邮箱,下同
     
        $this->form_validation->set_rules('nickname', '*昵称', 'trim|required|min_length[4]|max_length[20]|is_unique[Member.nickname]');
        $this->form_validation->set_message('min_length', '{field}最少{param}位!');
        $this->form_validation->set_message('max_length', '{field}最多{param}位!');
        $this->form_validation->set_message('is_unique', '{field}已被使用,请换一个吧!');
     
        $this->form_validation->set_rules('password', '*密码', 'trim|required|min_length[5]|max_length[16]');
        $this->form_validation->set_message('min_length', '{field}最少{param}位!');
        $this->form_validation->set_message('max_length', '{field}最多{param}位!');
     
        $this->form_validation->set_rules('password2', '*重复密码', 'trim|required|matches[password]');
        $this->form_validation->set_message('matches', '{field}与{param}不符合!');
         
        //callback_check_vcode此处是一个回调函数,对应的应该有个check_vcode方法
        $this->form_validation->set_rules('vcode', '*验证码', 'callback_check_vcode', 'trim|required');
        if ($this->form_validation->run() == false) {
     
        } else {
     
        }
     
    }

    check_vcode回调方法

    public function check_vcode($str)
    {
        //此处$str代表就是表单传递的值
        if ($str) {
            if ($_SESSION['home_login_session'] != md5($str)) {
                $this->form_validation->set_message('check_vcode', '{field}错误!');
                return false;
            } else {
                $this->form_validation->set_value('vcode');
                return true;
            }
        } else {
            $this->form_validation->set_message('check_vcode', '{field}必填!');
            return false;
        }
     
    }

    设置成功之后,会出现如下图所示的提示信息:

    63453.png

    这么看来,ci框架的表单验证是不是很简单好用呢?

    本文转自:破晓博客http://www.dawnfly.cn/article-1-341.html

    点评一下

    
    程序:HXC博客v1.0+ 主题:HXC博客前端Funs主题    环境:lamp  后台
    博客平稳运行2年+