一、定义:
ThinkPHP V5.0的控制器定义比较灵活,可以无需继承任何的基础类,也可以继承官方封装的\think\Controller
类或者其他的控制器类。
二、实际路径:
application\入口文件\controller\控制器名.php
三、前置操作:
可以为某个或者某些操作指定前置执行的操作方法,设置 beforeActionList属性可以指定某个方法为其他方法的前置操作,数组键名为需要调用的前置方法名,无值的话为当前控制器下所有方法的前置方法。
['except' => '方法名,方法名'] 除。。。。意外的
['only' => '方法名,方法名'] 仅。。。怎么样
四、页面跳转和重定向
1、跳转
在应用开发中,经常会遇到一些带有提示信息的跳转页面,例如操作成功或者操作错误页面,并且自动跳转到另外一个目标页面。系统的\think\Controller
类内置了两个跳转方法success
和error
,用于页面跳转提示。
$this->success('新增成功', 'User/list');
$this->error('新增失败');
跳转地址是可选的,success方法的默认跳转地址是$_SERVER["HTTP_REFERER"],error方法的默认跳转地址是javascript:history.back(-1);。
默认跳转时间为3秒;
//默认错误跳转对应的模板文件
'dispatch_error_tmpl' => APP_PATH . 'tpl/dispatch_jump.tpl',
//默认成功跳转对应的模板文件
'dispatch_success_tmpl' => APP_PATH . 'tpl/dispatch_jump.tpl',
2、重定向
需要跳转到上次记住的URL的时候使用:redirect()->restore();
五、空操作
空操作是指系统在找不到指定的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化。
public function _empty()
{
return 这里是空操作;
}
六、空控制器
class Error
{
public function _empty()
{
return 这里是空操作;
}
}
七、资源控制器
资源控制器可以让你轻松的创建RESTFul
资源控制器,可以通过命令行生成需要的资源控制器,例如:
// 生成index模块的Blog资源控制器
php think make:controller index/Blog
或者使用完整的命名空间生成
php think make:controller app\index\controller\Blog
然后你只需要为资源控制器注册一个资源路由:
Route::resource('blog','index/Blog');
设置后会自动注册7个路由规则,如下:
请求类型 | 生成路由规则 | 对应操作方法 |
---|---|---|
GET | blog | index |
GET | blog/create | create |
POST | blog | save |
GET | blog/:id | read |
GET | blog/:id/edit | edit |
PUT | blog/:id | update |
DELETE | blog/:id | delete |