根據 Laravel 文檔,如果遵循命名約定,策略應該被自動發現:它應該放在目錄中Policies,它的名稱應該是模型名稱加上單詞Policy,模型應該在app目錄中。就我而言,這一切都是正確的,但該政策不起作用。型號名稱是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(); ...}我的期望是我不應該能夠刪除此處Screen,因為該策略始終返回 false,但是Screen通過調用此方法已成功刪除。我究竟做錯了什么?
1 回答

月關寶盒
TA貢獻1772條經驗 獲得超5個贊
您仍然需要調用 authorize()。
$screen = Screen::find($id);
if ($this->authorize('delete', $screen)) {
? ?$screen->delete();
}
- 1 回答
- 0 關注
- 132 瀏覽
添加回答
舉報
0/150
提交
取消