>[warning] 为了规范代码,已废弃 _before_action 的前置方法,修改为 beforeAction 驼峰式写法
##使用方法
在控制器执行 foo 方法前,定义 beforeFoo 方法,就可以在执行 foo 方法前执行 beforeFoo 方法,可以用来做过滤和模板赋值数据添加,例如
```
class Test extend Controller
{
public function foo()
{
echo "foo<br>";
}
protected function beforeFoo()
{
echo "beforeFoo<br>";
}
}
// 输出结果
beforeFoo
foo
```
>[warning] 为了安全,请将前置控制器的访问属性设置为 protected,防止前置控制器被当做开放方法可以通过链接访问得到
##实现方式
###不修改官方源码:
>[info] 只要继承该控制器才能使用,推荐
在公共控制器,例如tpadmin的公共控制器application/admin/Controller.php文件的_initialize方法里加上:
```
// 前置方法
$beforeAction = "before" . ucfirst($this->request->action());
if (method_exists($this, $beforeAction)) {
$this->$beforeAction();
}
```
###直接修改官方源码:
>[warning] 任何地方可以使用,但是 ThinkPHP5 框架更新会出现问题,不建议修改官方源码,修改后一定要做标记,下次更新再同步去改
在thinkphp/library/think/Controller.php 第63行加上:
```
// 前置方法
$beforeAction = "before" . ucfirst($this->request->action());
if (method_exists($this, $beforeAction)) {
$this->$beforeAction();
}
```
>[info] 控制器方法调用不区分方法名大小写,不用担心大小写问题
- 概要
- 开始使用
- 写在前面
- 目录结构
- 模板主题支持
- 前置方法before支持
- 数据返回
- 异常接管
- Rbac 权限管理
- 开始使用
- 用户管理
- 分组管理
- 节点管理
- 角色管理
- 使用流程
- 其他
- 代码自动生成 v1.2
- 示例一 - 一级控制器
- 示例二 - 多级控制器
- 示例三 - 从数据表生成
- 示例四 - 指定生成的文件
- 示例五 - 命令行模式
- 示例六 - 模拟命令行模式
- 代码自动生成
- 示例一 - 一级控制器
- 示例二 - 多级控制器
- 控制器
- 公共控制器
- traits 多继承 Controller
- 公开不授权控制器
- 其他控制器
- 标签扩展
- 模板
- 网站操作日志
- 节点图
- 行为驱动
- 其他后端方法
- Excel一键导出
- Excel一键导入
- 文件下载
- 邮件发送
- 七牛文件上传
- id加密
- 前端
- ajax请求
- 表单校验
- 丰富弹层
- 异步操作
- 表格溢出
- 随机字符串
- 自动面包屑导航
- 动态加载文件
- 文件上传
- Tab 切换
- 图片预览
- 二维码生成
- 日历组件
- 升级指导
- 更新日志
- FAQ