一、控制器操作
1、我们首先复习一下基本的控制器定义和方法执行方式。
第一步:控制器默认创建在当前模块下的 Controller 目录下;第二步:按照指定的命名规则:控制器名(首字母大写)+Controller.class.php;
第三步:控制器里的方法必须是 public 公共的;
//控制器
class UserControllerextendsController {
public function index() {
//index()方法在URL访问时可以忽略
}
}
URL 访问:http://localhost/demo39/User/index/
2、如果方法名和关键字冲突,可以通过为方法名添加后缀的方式来解决:
//配置方法的后缀
'ACTION_SUFFIX'=>'ACTION',
PS:每个方法名后面加上后缀,通过URL访问时则不需要添加后缀
3、默认情况下URL访问的是控制器模块下的方法,也可以将某些方法分离到外部,然后进行访问:
a、Home目录下创建事件控制器目录:Event;
b、创建UserEvent.class.php类;
class UserEvent {
public function test(){
echo ‘当触发测试事件,执行这个方法,这个方法属于内部调用’;
}
}
c、访问控制器内部调用事件控制器方法:
class UserController extends Controller{
public function index(){
第一种方法:
$userEvent=new UserEvent();
$userEvent->test();
第二种方法:调用A()方法
$userEvent('User'(控制器名),'Event'(文件夹名));
}
}
4、当项目较为繁杂的时候,想创建统一模块下多个控制器时,可以配置二级控制器(一级和二级不能共同使用,只能使用一个)。
第一步:配置允许二级控制器;
//允许二级控制器
'CONTROLLER_LEVEL'=>2,
第二步:在 Controller目录下创建
User目录,在
User目录下创建一个控制器Member;
//二级控制器写法
namespace Home\Controller\User;
use Think\Controller;
class MemberControllerextends
Controller {
public function
index() {
echo '多级控制器';
}
PS:
ThinkPHP 控制器还提供了两个特殊的方法, 前置操作方法_before_index()和后置操作方法_after_index()。这两个方法,在控制器index()方法的时候,一个在之前执行,一个在之后执行。
//前置执行
public function
_before_index() {
echo '前置操作方法';
}
//后置执行
public function
_after_index() {
echo '后置操作方法';
}