如何使用策略在刀片模板中正确使用@can
P粉821231319
P粉821231319 2024-04-04 13:51:55
0
1
317

我无法按照文档的建议在刀片模板中创建@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)  @endcan

这正如文档所说。但我收到一个错误,它表示调用中需要另一个参数:

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

所以我猜我还必须在@can()中向用户发送,我将其更改为:

@can('update', Auth::user(), App\Models\Canal::class)  @endcan

这也不起作用,这根本不“调用”该策略。我怎么知道?我在那里放置了一些Log::info()

有什么想法吗?

P粉821231319
P粉821231319

全部回复 (1)
P粉451614834

要解决此问题,请在@can的第二个参数上发送$code而不是App\Models\Canal::class,例如:

@can('update', $canal)  @endcan
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!