首先创建一个控制器文件application/controller/pages.php,并编写代码:
class Pages extends CI_Controller{
public function view($page = 'home')
创建页头文件application/view/templates/header.php,代码如下:
<html>
<head>
<title><?php echo $title ?></title>
</head>
<body>
<h1>Hello World</h1>
再创建页尾文件,代码如下:
<strong>©2013</strong>
</body>
</html>
然后为控制器添加逻辑结构,之前创建了一个控制器并定义了一个方法view()。这个方法里定义了一个参数,它的值是即将加载的页面的名称。静态页面的模板将被放在application/views/pages/文件夹中。在那个文件夹中需要创建两个文件,分别是home.php和about.php。这两个文件中可以随便放一些内容进去。为了能加载那些页面,需要检查下它们是否存在:
class Pages extends CI_Controller{
public function view($page = 'home'){
if(!file_exists('application/views/pages/'.$page.'.php')){
echo 'application/views/pages/'.$page.'.php';
#show_404();
}
$data['title'] = ucfirst($page);
$this->load->view('templates/header',$data);
$this->load->view('pages/'.$page,$data);
$this->load->view('templates/footer',$data);
}
}
这个控制器现在可以工作了,在浏览器中键入localhost/index.php/pages/view就可以看到home页面。输入index.php/pages/view/about就可以看到about页面。根据自定义路由的规则,可以自定义任何控制器和方法的URI,这样就可以摆脱既定的访问规则了。
打开application/config/routes.php,添加下面两行代码,并删除$route数组中的其他代码。
$route['default_controller'] = "pages/view";
$route['(:any)'] = 'pages/view/$1';
通配符(:any)可以使任何请求都能匹配到$router数组,并且通过参数传递给pages类的view(0方法。现在就可以通过index.php/about访问about页面了。