laravel 取得目前route中所執行的action

Home / PHP / Laravel / laravel 取得目前route中所執行的action

最近在使用Entrust這個Laravel的套件,其中預設permission表格中有個「name」是用來表示這個permission的功能,在Entrust中是唯一值。然後後來我將其用來記錄user目前欲執行的action,例如說user只有「讀取」product資料的功能,但沒有「編輯」的功能,在url顯示上會是如下(PS:Route定義product為controller,使用RESTful的定義)

A:讀取id為65的product資料,可正常執行:

B:但沒有編輯product的權限,不可執行:

我的想法是,我只要知道目前的user在作什麼事,再到permissions中去找是否有此權限即可,故我需要取得目前user正在執行的事情,可用方法如下:

即可取得目前的action,故A是:

而B是:

然後將其定義在permissions表中的name,像下面這樣你有很多個action:
2015-02-04_181435

然後配合Entrust中的「can」使用,即可完全過濾沒有該權限的user:

如果需要取得目前route的名字的話,可以使用這個:

另外,如果在view中需的話如下:
controller name

action name

 

1559 全部 3 今日

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

*