zoukankan      html  css  js  c++  java
  • URL路由设置CI

    1.先看访问,CI的访问的是index.php 也就是入口。
    2.然后进入路由页面进行路由判断,路由页面在application/config/routes.php
    拿实际路由代码解释
    $route['default_controller']='pages/view';
    //这里定义的是默认C,访问的是pages页面 中view函数(这里可以这样理解,也可以说为方法)
    $route['blog']='blog';//设置index.php/blog 访问的是blog
    $route['pages/(:any)'] = 'pages/view/$1';
    //设置index.php/(:any) 访问的是pages/view/$1   $1表示后面的(:any) 的任意参数
    $route['news/(:any)'] = 'news/view/$1';
    $route['news'] = 'news';
    下面的两个同上面的
    3.进行路由后找对应的C层(controllers) c层在application/controllers 下
    仍然按照上面的默认访问为news 下面列出news在 controllers的代码,文件名为pages.php
    class News extends CI_Controller {
    public function __construct(){//初始化
      parent::__construct();
    //必须进行父类的初始化
      $this->load->model('news_model');
    //如果没有数据交互可以没有model的调用
    }
    public function index(){
    //定义的index函数,如果没有controller的函数部分,则默认调用index汉化
    $data['news']=$this->news_model->get_news();
    //调用上面初始化的model进行数据查询,并返回给data数组,这里定义的get_news要看下面的model
    $data['title'] = 'News archive';//设置data数据
    $this->load->view('templates/header', $data);
    //调用view中的templates/header页面 进行页面展示,并将data数据传递给view
    $this->load->view('news/index', $data);
    //这里调用view中的 news/index 页面,并传递$data 数据
    $this->load->view('templates/footer');//不传递任何数据
     }
    public function view($slug){
    //view函数,如果参数$slug存在则进行查询,如果不存在则显示404错误 
    $data['news_item'] = $this->news_model->get_news($slug);
    //这里定义的get_news要看下面的model
    if (empty($data['news_item']))show_404();
    //如果获取的内容为空,或者不能获取,则展示404错误
    $data['title'] = $data['news_item']['title'];
    //同样将数据给data,并通过view进行传值。
    $this->load->view('templates/header', $data);
    $this->load->view('news/view', $data);
    $this->load->view('templates/footer');  
     } 
    }
    4,下面介绍model层,进行的是数据调用和逻辑控制等,在application/models 下,文件名news_model.php
    看news_model代码如下:
    class News_model extends CI_Model{
     public function __construct(){
       $this->load->database();//调用数据库,以后说数据库设置
     }
     public function get_news($slug=FALSE){//这里是上面调用的get_news
      if($slug===False){//看是否有查询参数,如果没有获取全部新闻
     $query=$this->db->get('news');
     return $query->result_array();
       }//如果有,则按照条件进行查询,数据调用以后令讲。
       $query = $this->db->get_where('news',array('slug'=>$slug));
       return $query->row_array();  
      }
    }
    5.最后面的是view视图 在application/views/news/view.php
    代码如下:
    echo '<h2>'.$news_item['title'].'</h2>';
    echo $news_item['text'];
    echo $news_item['id'];

    在页面输入 http://localhost/index.php/news 进行访问了



    在application/config/文件夹下有routes.php的设置。

    1.首先说URL默认路由设置
    $route['default_controller']='defaultFunction';
    这个是设置的默认访问的路由,对应的访问对应的类,也就是默认的controllers,如果没有任何参数,则会访问controllers 对应的index函数

    2.设置404错误页面
    $route['404_oberride']='';
    这里设置的是404错误页面,可以自定义,一般的默认的是对应的view中的index.html

    3,上面连个都是固定的写法,下面对自定义的url路由进行解释

    默认的定义为
    forasp.cn/className/function/id
    这样默认的路由为 调用className的controllers类,调用内部方法为function,传递第三个值为id,那在route路由中怎么实际设置呢
    比如要新闻 展示 序号为100的内容,请求url为
    $route['news/show/(:num)']='news/show/$1';
    上面的意思是 调用controllers为news,方法为show 参数为$1 也就是序号
    在 controllers里面获取参数为
    举例 route为:
    $route['pages/(:any)/(:any)'] = 'pages/view/$1/$2';
    定义controllers里面pages为
    class Pages extends CI_Controller {
    public function view($p1,$p2){
    echo $p1.$p2;
    }
    }
    那访问 forasp.cn/index.php/pages/1/2
    则会输出 12
    说一下后面参数的配置,目前有两种参数
    :num 将匹配一个只包含有数字的segment(段).
    :any 将匹配一个包含任何字符的segment. 
    这就是codeIgniter中route路由设置相关情况

  • 相关阅读:
    POJ 2031 Building a Space Station (最小生成树)
    HDU 1875 畅通工程再续 (最小生成树)
    HDU 1233 还是畅通工程 (最小生成树)
    POJ 1679 The Unique MST (最小生成树)
    js调试工具console详解
    使用阿里云集成包快速搭建LAMP+FTP教程
    PHP使用纯真IP数据库
    mysql配置文件my.cnf解析
    Javascript常用函数收集(不定期更新)
    性能测试工具:AB
  • 原文地址:https://www.cnblogs.com/akatuki/p/4246808.html
Copyright © 2011-2022 走看看