前面文章整体说了一下Codeigniter的访问,其中涉及到route,URL路由设置,下面对CI控制器,在codeigniter里就是一个类文件,用来处理url过来的需求,在mvc架构中controllers主要控调用模型和视图去完成用户的需求,不做任何输出和数据处理。数据处理和输出则是要model层进行操作。
在CI中,控制器是一个类文件,存放在application/controllers目录下,命名根据类名进行命名URL请求控制器: www.anypoetry.com/index.php/控制器名(类名)/方法名(如果没有方法则调用index方法)
一调用类名,比如URL请求为www.anypoetry.com/index.php/pages/则会调用对应的pages的controllers
<?php
class Pages extends CI_Controller {
function __construct() {
parent::__construct();
}
public function index() {
echo 'pages!';
}
}
//这里不应有输出
当前为了观看方便,则进行的输出操作
?>
将上面文件保存为pages.php保存在控制器的文件夹中即可。
要求:
1.必须继承CI主控制类
2.类名首字母必须大写。
二 URL请求控制器方法www.anypoetry.com/index.php/pages/view
这样的url则会调用pages类下的view方法
<?php
class Pages extends CI_Controller {
function __construct()
{
parent::__construct();
}
public function index() {
echo 'pages!';
}
}
public function view(){
echo "调用pages里面的view方法";
}
}
?>
三URL请求控制器方法并传递参数www.anypoetry.com/index.php/pages/show/canshu1/canshu2/canshu3
<?php
class Pages extends CI_Controller {
function __construct()
{
parent::__construct();
}
fublic function index() {
echo 'pages!';
}
}
public function show($c1,$c2,$c3){
echo "参数1".$c1;
echo "参数2".$c2;
echo "参数3".$c3;
}
}
?>
四 URL请求控制器,在控制器里面创建文件夹。控制器里面创建对应的文件夹,则也要再路由application/config/route.php中设置对应的请求控制器的文件夹,仍然拿 上面的pages类为例。
在application/controllers/里面创建了一个wj文件夹,在路由route.php设置如下
$route['wj/pages'] = 'wj/pages';
当URL请求为www.anypoetry.com/index.php/wj/pages/show
则会调用 controllers里面的文件夹wj下面的pages类,并调用的是show方法。
五 在类中重定义控制器路由调用方法,CI控制器提供了一个方法_remap(),如果你在你的URL请求中请求了带实际方法,则不会去调用而是默认的通过_remap()进行判断调用,不会直接调用你请求的方法。
举例:在pages定义类中的_remap如下
function _remap($method,$params = array()){
echo $method;//这里是临时输出调用的方法名
var_dump($params);//获取后面的URL调用参数
$this->$method(); //调用对应的当前类中的方法
}
请求url为 http://www.anypoetry.com/index.php/wj/pages/view/can1/can2
在会调用 _remap输出方法名为view 输出的两个参数为 can1 和can2
然后调用pages类中的view方法
这里需要补充一下的是 $method 是必须参数,$params 不是必须参数
六 其他两个私有方法 和 处理输出 不是很理解,暂时就不在此做介绍了
更多信息请查看IT技术专栏