ThinkPHP3.2.2获取当前Action名称 博客分类: ThinkPHP
使用ThinkPHP的如下系统常量参数即可:
MODULE_NAME
CONTROLLER_NAME
ACTION_NAME
注意:3.2版本在原来3.1.3的独立分组的基础上进行了改进,改进后的独立分组就是新版的模块,之前的模块则改称为控制器。 默认情况下,只要应用目录下面存在模块目录,该模块就可以访问,只有当你希望禁止某些模块或者仅允许模块访问的时候才需要进行模块列表的相关设置。
所在在3.1中的MODULE_NAME是3.2中的CONTROLLER_NAME。
前置和后置操作的注意事项如下:
1. 如果当前的操作并没有定义操作方法,而是直接渲染模板文件,那么如果定义了前置和后置方法的话,依然会生效。真正有模板输出的可能仅仅是当前的操作,前置和后置操作一般情况是没有任何输出的。
2. 需要注意的是,在有些方法里面使用了exit或者错误输出之类的话 有可能不会再执行后置方法了。例如,如果在当前操作里面调用了系统Action的error方法,那么将不会再执行后置操作,但是不影响success方法的后置方法执行。
如请求了IndexController的Index方法,却在IndexController中没有定义,只要定义了_before_index(),_after_index(),index.html的模版也会生效
3.2.2模块化设计
这样的话,所有请求都直接访问IndexController了。
这里需要注意一个地方,一旦开启了不区分URL大小写后,如果我们要访问类似UserTypeController的控制器,那么正确的URL访问应该是:
// 正确的访问地址
http://serverName/index.php/home/user_type/index
// 错误的访问地址(linux环境下)
http://serverName/index.php/home/usertype/index
所以U('user_type/add')方法访问的是UserTypeController控制器的add方法
'URL_CASE_INSENSITIVE'=>false 或没有设置
U('user_type/add')访问的是UserTypeController,但当前的CONTROLLER_NAME却是User_type,对应模板也应该是(linux)User_type/add.html