Laravel 控制器前置方法與後置方法的程式碼變更設定

小丑路人發表於2018-07-21

進入laravel的核心檔案 vendor\laravel\framework\src\Illuminate\Routing\Controller.php
查詢到方法 callAction
原始碼為:

public function callAction($method, $parameters)
{
        return calluserfuncarray([$this, $method], $parameters);
}

改成:

public function callAction($method, $parameters)
{
            if(methodexists($this,'beforeAction')) calluserfuncarray([$this, 'beforeAction'], ['action' => $method]);
            $return = calluserfuncarray([$this, $method], $parameters);
            if(methodexists($this,'afterAction')) calluserfuncarray([$this, 'afterAction'], ['action' => $method]);
            return $return;
}

那麼在控制器寫,例如:
file

頁面效果為:
file

日誌執行順序為:file

前置方法與後置方法可以為空。
方法名字建議使用定義常量的方式來檢測。方便後續擴充套件。
寫這個後置是為了,自己準備進行事件繫結,但是不想每個方法去寫,準備寫一個類來設定進行對不同方法,不同監聽事件。

laravel社群的連結地址

相關文章