我在我的Laravel应用程序中创建了以下策略:
public function create(User $user): Response
{
$storeLimit = 3;
// Check if user already is a store owner (many-to-many relationship via store_user table where role = owner)
if ($user->stores()->where('role', 'owner')->count() >= $storeLimit) {
return Response::deny('You can`t create more stores.');
}
return Response::allow();
}
字符串
在我的.blade模板中:
@can('create', App\Models\Store::class)
<button>Create store</button>
@else
<p>How to display Response message here?</p>
@endcan
型
当使用@can指令时,如何在.blade模板中显示“deny”消息?
1条答案
按热度按时间j8yoct9x1#
要在使用@can指令时在.blade模板中显示“deny”消息,您可以在策略方法的变量中捕获消息,然后将其传递到视图。以下是如何修改代码以实现此目的:
在Laravel策略中,修改create方法,以在用户被拒绝时捕获变量中的“deny”消息:
字符串
在.blade模板中,您现在可以检查是否设置了$denyMessage变量,如果存在则显示它:
型
通过在策略中的$denyMessage变量中捕获“deny”消息,您可以检查其是否存在于刀片模板中,并在拒绝用户创建存储的权限时显示该消息。如果未设置“deny”消息,则可以提供默认消息,如示例中所示。