
控制器采用驼峰命名注意,比如UserInfo,那么URL访问时不能访问UserInfo,因为浏览器会将UserInfo强制转换成userinfo小写,而是应该在大写字母写加_,比如http://www.yd.com/user_info访问
控制器加载界面的三种方式:
我们先创建前端界面,前端界面都在index模块下的view层,view下创建和控制器名字相同的目录,在目录下创建和控制器方法一样名字的html文件
比如我分别在application/index/showview下创建了两个html界面:show.html,showtwo.html
然后我创建了showview控制器
use think\Controller;
class Showview extends Controller
{
public function index(){
echo '我是ShowView的index';
}
// 加载前端界面的三种方式
public function show(){
//第一种,直接调用view()函数,它会自动寻找view模块下showview目录下的show文件
// return view();
//第二种,调用think\View下的fetch()方法
// $view=new \think\View;
// return $view->fetch();
//第三种方法,使用Controller下fetch()方法
return $this->fetch(); //控制器需要继续Controller
}
public function showtwo(){
return view();
}
}
数据输出
我们控制器里面的方法默认return返回的是html格式的数据,我们可以修改默认返回的格式,在config.php下面修改
// 默认输出类型
'default_return_type' => 'html', //将html可以修改为json
AJAX请求默认返回的数据类型
// 默认AJAX 数据返回格式,可选json xml ...
'default_ajax_return' => 'json',
控制器的初始化
使用_initialize()方法,我们在URL访问控制器的任意方法时,会先加载_initialize方法,详情请看ThinkPHP的文档控制器初始化,控制系比如集成constroller
前置操作 控制器必须集成Constroller
作用:我们在URL请求控制器的某些方法时,可以让请求的方法调用前先加载指定的方法,比如调用A方法时,可以先指定在加载A方法前必须加载B方法
use think\Controller;
class before extends Controller
{
protected $beforeActionList = [
'testA',
'testB' => ['except'=>'indexthree'], //前置方法testB不能让indexthree方法使用
'testC' => ['only'=>'index'], //前置方法testC只能让index方法使用
];
public function testA(){
echo "testA<hr>";
}
public function testB(){
echo "testB'<hr>'";
}
public function testC(){
echo "testC<hr>";
}
public function index(){
return "index";
}
public function indextwo(){
return "indextwo";
}
public function indexthree(){
return "indexthree";
}
}
文章来源: ThinlPHP5之控制器
人吐槽 | 人点赞 |
发表评论