ci框架

作者: Bill_Chow | 来源:发表于2016-03-20 21:15 被阅读138次

    什么是MVC

    mvc 是一种将应用程序的逻辑层和表示层分离开来的软件方法

    使用ci的默认控制器

    • 可以在 application/routes.php 下设置 $route['default_controller'] = "";
    • 隐藏 index.php 入口文件,首先开启apache 的 Rewrite 重写规则
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond $1 !^(index.php|images|robots\\\\.txt)
    RewriteRule  ^(.*)$ index.php/$1 [L]
    

    表单验证类

    • 在载入该表单视图的控制器下的该方法下, 首先载入辅助函数 $this->load->helper('form');
    • <form action="控制器/方法名"> 提交回来的方法下
      载入$this->load->library('form_validation')
    • 然后就是用$this->form_validation->set_rules('表单元素的name 名',‘错误提示’,‘规则’);
    • 然后使用if($this->form_validation->run())进行判断,看是否符合规则
    • 当然当我们提交表单错误后,会对页面进行刷新,这时,我们就需要保留值以及提示错误信息了
      在该表单视图下的 input 下 使用 <?php echo set_value('name名')?> 和在下面一行使用
      <?php echo form_error('name名','<span>','</span>')?>
    • CI提供了一个更加简洁的方法给我们设置规则,在application/config下新建form_validation.php
    <?php
      $config = array(
          'article'=>array(
            'field' =>'name 名',
            'label' => '错误提示',
            'rules' =>'规则'
        ),
    );
    ?>
    
    • 最后只需要在$this->form_validation->run('article');

    自定义函数

    • 可以在system/core/common.php 下自定义函数,它是全局加载的,在最下面加载
      这里算是成功之后的跳转
     function success($url,$msg){
        header("Content-Type:text/html;charset=utf-8");
        $url = site_url($url);
        echo "<script>alert('$msg');location.href='$url'</script>";  
        die;
    }
    
    • 调试模式 $this->output->enable_profiler(true);但是必须载入模板;$this->load->view() 可以随便放

    文件上传

    • 首先在控制器下,设置有关的配置
    $config['upload_path']='image'; //与application 同级目录下,上传目录
    $config['allowed_types'] = 'jpg|gif|png|jpeg'; // 定义上传类型,可以用 * 代替
    $config['max_size'] = '10000';
    $config['file_name'] = time().mt_rand(1000,9999);//使用时间戳定义文件名,不然的话相同名字的文件会被覆盖
    
    //载入上传类,传入配置
    $this->load->library('upload',$config);
    
    // 执行上传动作
    $status = $this->upload->do_upload('filename'); //do_upload('') 里面的值为<input type='file' name ="filename"> name的值
    
    // 提示错误,与上面的不一样,类型不对或者路径不对,或者是大小超过出现的错误信息
    $wrong=$this->upload->display_errors()
    if($wrong){
      echo $wrong;
      die;
    }
    
    //返回信息
    $info = $this->upload->data();
    可以尝试打印一下
    //print_r($info);
    
    //缩略图----------------
    
    //同样先设置一下配置,这里的数组可以随便设置,可以设置成$config[],主要是因为不想与上面发生冲突
    $thumb['sourse_image'] = $info['full_path'];
    $thumb['create_thumb'] = FALSE;
    $thumb['maintain_ratio'] = TRUE; // 像素比
    $thumb['width'] = 200;
    $thumb['height'] = 200;
    
    //载入 缩略图类
    $this->load->library('image_lib',$thumb);
    //执行动作
    $thumb_status=$this->image_lib->resize();
     //同样需要判断一下是否缩略了
    if(!$thumb_status){
      echo "thumb fail";
      die;
    }
    
    
    

    分页

    • 同样载入视图 $this->load->library('pagination')
    • 写配置
    $perPage = 3 ; // 每页显示的条数
    
    // 控制器/方法名
    $config['base_url'] = site_url('article/index'); 
    $config['total_rows'] = $this->db->count_all_results('artical');
    //每页显示多少条
    $config['per_page'] = $perPage;
    $config['uri_segment'] = 3; //获取到上面base_url 
    
    // 初始化pagination
    $this->pagination->initialize($config);
    //创建分页
    $data['links'] = $this->pagination->create_links();
    
    $offset =$this->uri->segment(3);
    $this->db->limit($perPage,$offset);
    
    $this->load->model('artical');
    $data['artical'] = $this->artical->artical_category();
    $this->load->view('check_artical.html',$data);
    
    • 另一实例
    $this->load->library('pagination');
            $config = array(
                    'base_url'       => site_url().'/'.$this->uri->segment(1).'/'.$this->uri->segment(2),
                    'total_rows'     => $this->db->count_all('articles'),
                    'per_page'       => 14,
                    'num_links'      => 5,
                    'first_link'     => FALSE,
                    'last_link'      => FALSE,
                    'full_tag_open'  => "<ul class='pagination'>",//关闭标签
                    'full_tag_close' => '</ul>',
                    'num_tag_open'   => '<li>', //数字html
                    'num_tag_close'  => '</li>',    //当前页html
                    'cur_tag_open'   => "<li class='active'><a href='javascript:void(0),'>",
                    'cur_tag_close'  => "</a></li>",
                    'next_tag_open'  => '<li>', //上一页下一页html
                    'next_tag_close' => '</li>',
                    'prev_tag_open'  => '<li>',
                    'prev_tag_close' => '</li>',
                    'prev_link'      => "<i class='iconfont'></i>",
                    'next_link'      => "<i class='iconfont'></i>"
           );
            $this->pagination->initialize($config);
            $data=array(
                     'article'       => $this->Article_model->get_article($id=FALSE,$config['per_page'],$this->uri->segment(3)), //$this->uri->segment(3) 就是上面设置的per_gage 参数
                     'article_nums'  => $this->db->count_all('articles'),
                     'categoryes'    =>$this->Categoryes_model->get_categoryes() //栏目
                  ); 
    
           $this->load->view('article_list',$data);
    
    

    子目录下使用默认控制器

    • 在根目录下的index.php 添加代码 $routing['directory'] = 'admin';
    • 然后在application/config/routes.php 的默认控制器下添加 控制器名称 ,比如 $route['default_controller'] = 'flashadmin';

    CI框架的一些常量

    我们可以在system/common.php,这个文件是用来加载基类库和公共函数的,也就是说在里面创建函数可以直接使用
    我们创建一个打印出ci框架的系统常量

    function print_const(){
        $const = get_defined_constants(TRUE);
        p($const['user']);  
    }
    
    function p($arr){
        echo '<pre>';
        print_r($arr);
        echo '</pre>';
    }
    
    

    结果如下:

    Array
    (
        [ENVIRONMENT] => development
        [SELF] => index.php
        [BASEPATH] => G:\xampp(1)\htdocs\wechat2016\system\
        [FCPATH] => G:\xampp(1)\htdocs\wechat2016\
        [SYSDIR] => system
        [APPPATH] => G:\xampp(1)\htdocs\wechat2016\application\
        [VIEWPATH] => G:\xampp(1)\htdocs\wechat2016\application\views\
        [CI_VERSION] => 3.0.6
        [SHOW_DEBUG_BACKTRACE] => 1
        [FILE_READ_MODE] => 420
        [FILE_WRITE_MODE] => 438
        [DIR_READ_MODE] => 493
        [DIR_WRITE_MODE] => 493
        [FOPEN_READ] => rb
        [FOPEN_READ_WRITE] => r+b
        [FOPEN_WRITE_CREATE_DESTRUCTIVE] => wb
        [FOPEN_READ_WRITE_CREATE_DESTRUCTIVE] => w+b
        [FOPEN_WRITE_CREATE] => ab
        [FOPEN_READ_WRITE_CREATE] => a+b
        [FOPEN_WRITE_CREATE_STRICT] => xb
        [FOPEN_READ_WRITE_CREATE_STRICT] => x+b
        [EXIT_SUCCESS] => 0
        [EXIT_ERROR] => 1
        [EXIT_CONFIG] => 3
        [EXIT_UNKNOWN_FILE] => 4
        [EXIT_UNKNOWN_CLASS] => 5
        [EXIT_UNKNOWN_METHOD] => 6
        [EXIT_USER_INPUT] => 7
        [EXIT_DATABASE] => 8
        [EXIT__AUTO_MIN] => 9
        [EXIT__AUTO_MAX] => 125
        [MB_ENABLED] => 1
        [ICONV_ENABLED] => 1
        [UTF8_ENABLED] => 1
    )
    

    相关文章

      网友评论

          本文标题:ci框架

          本文链接:https://www.haomeiwen.com/subject/xmhakttx.html