>[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