我無法按照文檔的建議在刀片模板中創(chuàng)建 @can()
這是我的政策:
public function update(User $user, Canal $canal): bool { return ($canal->user->id == $user->id) and ($user->hasPermissionTo('actualizar canal')); }
我正在使用 Spatie 權限。無論如何,如果我將控制器中的路由保護為:
,則此策略有效public function edit(Request $request, Canal $canal) { $this->authorize('update', $canal); return view('Canal/edit', ['canal' => $canal]); }
現在,我的問題出在刀片上。我想有條件地渲染一個按鈕來編輯 $canal
,我正在嘗試這樣做:
@can('update', App\Models\Canal::class) <x-gui.link-button href="{{ route('canal.edit', $canal->id) }}" value="Modificar" /> @endcan
這正如文檔所說。但我收到一個錯誤,它表示調用中需要另一個參數:
Too few arguments to function App\Policies\CanalPolicy::update()
所以我猜我還必須在 @can()
中向用戶發(fā)送,我將其更改為:
@can('update', Auth::user(), App\Models\Canal::class) <x-gui.link-button href="{{ route('canal.edit', $canal->id) }}" value="Modificar" /> @endcan
這也不起作用,這根本不“調用”該策略。我怎么知道?我在那里放置了一些 Log::info()
。
有什么想法嗎?
要解決此問題,請在 @can
的第二個參數上發(fā)送 $code
而不是 App\Models\Canal::class
,例如:
@can('update', $canal) <x-gui.link-button href="{{ route('canal.edit', $canal->id) }}" value="Modificar" /> @endcan
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號