Comment utiliser correctement @can dans le modèle de lame en utilisant la stratégie
P粉821231319
P粉821231319 2024-04-04 13:51:55
0
1
494

Je ne parviens pas à créer dans le modèle de lame comme le suggère la documentation @can()

Voici ma politique :

public function update(User $user, Canal $canal): bool {
  return ($canal->user->id == $user->id) and ($user->hasPermissionTo('actualizar canal'));
}

J'utilise les autorisations Spatie. Quoi qu'il en soit, cette stratégie fonctionne si je protège la route dans le contrôleur comme :

public function edit(Request $request, Canal $canal) {
    $this->authorize('update', $canal);
    return view('Canal/edit', ['canal' => $canal]);
  }

Maintenant, mon problème vient de la lame. Je veux rendre conditionnellement un bouton à modifier $canal, j'essaie de faire ceci :

@can('update', App\Models\Canal::class)
    <x-gui.link-button href="{{ route('canal.edit', $canal->id) }}" value="Modificar" />
  @endcan

C'est exactement ce que dit la documentation. Mais j'obtiens une erreur indiquant qu'un autre paramètre est requis dans l'appel :

Too few arguments to function App\Policies\CanalPolicy::update()

Donc je suppose que je dois aussi envoyer l'utilisateur @can(), je l'ai changé en :

@can('update', Auth::user(), App\Models\Canal::class)
    <x-gui.link-button href="{{ route('canal.edit', $canal->id) }}" value="Modificar" />
  @endcan

Ça ne marche pas non plus, cela n'"appelle" pas du tout la stratégie. comment pourrais-je le savoir ? J'en ai mis du Log::info() dedans.

Des idées ?

P粉821231319
P粉821231319

répondre à tous(1)
P粉451614834

Pour résoudre ce problème, veuillez ajouter un message dans @can 的第二个参数上发送 $code 而不是 AppModelsCanal::class, par exemple :

@can('update', $canal)
    <x-gui.link-button href="{{ route('canal.edit', $canal->id) }}" value="Modificar" />
@endcan
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal