Rumah  >  Soal Jawab  >  teks badan

Cara menggunakan @can dengan betul dalam templat bilah menggunakan strategi

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粉821231319P粉821231319221 hari yang lalu436

membalas semua(1)saya akan balas

  • P粉451614834

    P粉4516148342024-04-05 10:10:24

    Untuk menyelesaikan isu ini, sila tambahkan @can 的第二个参数上发送 $code 而不是 AppModelsCanal::class dalam

    , sebagai contoh: 🎜
    @can('update', $canal)
        <x-gui.link-button href="{{ route('canal.edit', $canal->id) }}" value="Modificar" />
    @endcan

    balas
    0
  • Batalbalas