CodeIgniter框架官网手册-阅读笔记(1)

ci框架手册来自:CodeIgniter中国官方手册php

+++++++++++++++++++++++++++++++++++++html

 

教程 - 内容提要:web

  --建立一个简单新闻系统正则表达式

  --教程主要介绍如下技术要点:数据库

    一、模型 - 视图 - 控制器(Model - View - Controller)基础知识api

    二、URI路由基础数组

    三、表单验证浏览器

    四、使用“查询构造器”执行基本的数据库操做app

  

  整个教程会被分拆成多个章节,每一个章节会介绍涉及到CodeIgniter的不一样功能点:框架

    一、加载静态内容:此节主要介绍控制器(Controllers),视图(Views)和路由(Routing)的基础知识;

    二、读取新闻条目:此节开始介绍模型(Models)的相关知识,以及在模型中执行一些基本的数据库操做;

    三、建立新闻条目:此节主要介绍在CodeIgniter中执行高级数据库操做,以及表单验证的相关知识;

加载静态内容:

  Note:这篇教程假设你已经下载好CodeIgniter,并将其安装到你的开发环境;

  你要作的第一件事情是新建一个控制器来处理静态页面,控制器就是一个简单的类,用来完成你的工做,它是你整个web应用程序的"粘合剂";

  例如,当访问下面这个URL时:

    http://example.com/news/latest/10

  经过这个URL咱们就能够推测出来,有一个叫作“news”的控制器,被调用的方法为“latest”,这个方法的做用应该是查询10条新闻条目并显示在页面上。在MVC模式里,你会常常看到下面格式的URL:

    http://example.com/[controller-class]/[controller-method]/[arguments]

  在正式环境下URL的格式可能会更复杂,可是如今,咱们只须要关心这些就够了;

  新建一个文件application/controllers/Pages.php,而后添加以下代码:

  <?php

    class Pages extends CI_Controller{

      public function view($page = 'home'){

      }

    }

  ?>

  你刚刚建立了一个Pages类,有一个方法view并可接受一个$page参数。Pages类继承自CI_Controller类,这意味着它能够访问CI_Controller类(system/core/Controller.php)中定义的方法和变量;

  控制器将会成为你的Web应用程序中的处理请求的核心,在关于CodeIgniter的技术讨论中,这有时候被称为超级对象。和其余的PHP类同样,能够在你的控制器中使用$this来访问它,经过$this你就能够加载类库、视图、以及针对框架的通常性操做;

  如今,你已经建立了你的第一个方法,是时候建立一些基本的页面模板了,咱们将新建两个视图(页面模板)分别做为咱们的页脚和页头;

  新建页头文件application/views/templates/header.php并添加如下代码:

    <html>

      <head>

        <title>CodeIgniter Tutorial</title>

      </head>

      <body>

        <h1><?php echo $title; ?></h1>

   页头包含了一些基本的HTML代码,用于显示页面的主视图以前的内容。另外,它还打印出了$title变量,这个咱们后面讲控制器的时候再讲。如今,再新建个页脚文件application/views/templates/footer.php,而后添加如下代码:

        <em>&copy; 2015</em>

      </body>

    </html>

在控制器中添加逻辑:

  你刚刚新建了一个控制器,里面有一个view()方法,这个方法接受一个参数用于指定要加载的页面,静态页面模板位于application/views/pages/目录。

  在该目录中,再新建两个文件home.php和about.php,在每一个文件里随便写点东西而后保存他们。若是你没有什么好写的,就写“Hello World!”吧。

    为了加载这些页面,你须要先检查下请求的页面是否存在:

    public function view($page = 'home'){

      if( !file_exists(APPPATH.'views/pages/'.$page.'.php')){

         //Whoops, we don't have a page for that!

        show_404();

      }

      $data['title'] = ucfirst($page); //Capitalize the first letter

 

      $this -> load -> view('templates/header',$data);

      $this -> load -> view('pages/'.$page,$data);

      $this -> load -> view('templates/footer',$data);

    }

  当请求的页面存在,将包括页面和页脚一块儿被加载并显示给用户,若是不存在,会显示一个“404 Page not found”错误。

  第一行检查页面是否存在,file_exists()是个原生的PHP函数,用于检查某个文件是否存在,show_404()是个CodeIgniter内置的函数,用来显示一个默认的错误页面。

  在页头文件中,$title 变量用来自定义页面的标题,它是在这个方法中赋值的,可是注意的是并非直接赋值给title 变量,而是赋值给一个&data数组的title元素。

  最后要作的是按顺序加载所需的视图,view()方法的第二个参数用于向视图传递参数,$data数组中的每一项将被赋值给一个变量,这个变量的名字就是数组的键值。因此控制器中$data['title']的值,就等于视图中的$title的值。

路由:

  控制器如今开始工做了!在你的浏览器中输入[your-site-url]index.php/pages/view来查看你的页面。当你访问index.php/pages/view/about时你将看到about页面,包括页头和页脚。

  使用自定义的路由规则,你能够将任意的URI映射到任意的控制器和方法上,从而打破默认的规则:

  http://example.com/[controller-class]/[controller-method]/[arguments]

  让咱们来试试。打开文件application/config/routes.php而后添加以下两行代码,并删除掉其余对$route数组赋值的代码。

  $route['default_controller'] = 'pages/view';

  $route['(:any)'] = 'pages/view/$1';

  CodeIgniter 从上到下读取路由规则并将请求映射到第一个匹配的规则,每个规则都是一个正则表达式(左侧)映射到一个控制器和方法(右侧)。当有请求到来时,CodeIgniter 首先查找能匹配的第一条规则,而后调用相应的控制器和方法,可能还带有参数。

 

  这里,第二条规则中$routes数组使用了通配符(:any) 能够匹配全部的请求,而后将参数传递给Pages类的view()方法。

  如今访问index.php/about 。路由规则是否是正确的将你带到了控制器的view()方法?实在是太棒了!

相关文章
相关标签/搜索