Rumah > Soal Jawab > teks badan
Saya tidak dapat mencipta dalam templat bilah seperti yang dicadangkan oleh dokumentasi @can()
Ini adalah polisi saya:
public function update(User $user, Canal $canal): bool { return ($canal->user->id == $user->id) and ($user->hasPermissionTo('actualizar canal')); }
Saya menggunakan kebenaran Spatie. Bagaimanapun, strategi ini berfungsi jika saya melindungi laluan dalam pengawal sebagai:
public function edit(Request $request, Canal $canal) { $this->authorize('update', $canal); return view('Canal/edit', ['canal' => $canal]); }
Sekarang, masalah saya ialah dengan bilah. Saya ingin memberikan butang untuk mengedit secara bersyarat $canal
, saya cuba melakukan ini:
@can('update', App\Models\Canal::class) <x-gui.link-button href="{{ route('canal.edit', $canal->id) }}" value="Modificar" /> @endcan
Inilah yang dikatakan oleh dokumentasi. Tetapi saya mendapat ralat yang mengatakan parameter lain diperlukan dalam panggilan:
Too few arguments to function App\Policies\CanalPolicy::update()
Jadi saya rasa saya juga perlu menghantar pengguna masuk @can()
, saya menukarnya kepada:
@can('update', Auth::user(), App\Models\Canal::class) <x-gui.link-button href="{{ route('canal.edit', $canal->id) }}" value="Modificar" /> @endcan
Ini juga tidak berkesan, ini tidak "memanggil" strategi sama sekali. bagaimana saya boleh tahu? Saya meletakkan beberapa Log::info()
di sana.
Ada idea?
P粉4516148342024-04-05 10:10:24
Untuk menyelesaikan isu ini, sila tambahkan @can
的第二个参数上发送 $code
而不是 AppModelsCanal::class
dalam
@can('update', $canal) <x-gui.link-button href="{{ route('canal.edit', $canal->id) }}" value="Modificar" /> @endcan