根據(jù) Laravel 文檔,如果遵循命名約定,策略應(yīng)該被自動(dòng)發(fā)現(xiàn):它應(yīng)該放在目錄中Policies,它的名稱(chēng)應(yīng)該是模型名稱(chēng)加上單詞Policy,模型應(yīng)該在app目錄中。就我而言,這一切都是正確的,但該政策不起作用。型號(hào)名稱(chēng)是Screen。該政策被命名為ScreenPolicy:class ScreenPolicy{ use HandlesAuthorization; /** * Create a new policy instance. * * @return void */ public function __construct() { // } public function delete(User $user, Screen $screen) { return false; //always return false for testing }}在我的控制器中,我有以下刪除 a 的方法Screen:public function delete(Request $request) { $screen = Screen::find($request->screen_id); $screen->delete(); ...}我的期望是我不應(yīng)該能夠刪除此處Screen,因?yàn)樵摬呗允冀K返回 false,但是Screen通過(guò)調(diào)用此方法已成功刪除。我究竟做錯(cuò)了什么?
1 回答

月關(guān)寶盒
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊
您仍然需要調(diào)用 authorize()。
$screen = Screen::find($id);
if ($this->authorize('delete', $screen)) {
? ?$screen->delete();
}
- 1 回答
- 0 關(guān)注
- 143 瀏覽
添加回答
舉報(bào)
0/150
提交
取消