php - laravel 中 @if 和 @can 有什么区别
问题描述
正在与不同的用户一起制作项目。我注意到我可以@if
用来阻止特定用户使用特定功能,但我也可以使用@can
. 有人可以告诉我他们的区别是什么。我没有注册任何政策,AuthServiceProvider
但我仍然可以使用@can
方法。我只是指用户的类型。我会给你看一些代码。
能
@can($global_user->role != 0)
<li class="{{ $mnuname == 'Issue' ? 'active' : '' }}">
<a href="{{ route('admin.issues') }}" onclick="return LoadingOverlay();">
<i class="fa fa-list"></i>
<span>Issue Tracker</span>
</a>
</li>
@endcan
如果
@if($global_user->role != 0)
<li class="{{ $mnuname == 'Student' ? 'active' : '' }}">
<a href="{{ route('admin.students') }}" onclick="return LoadingOverlay();">
<i class="fa fa-child"></i>
<span>Students</span>
</a>
</li>
@endif
编辑:我也可以使用这样的@can
内部@if
语句吗?
@if($global_user->role != 0)
<li class="treeview
{{ $mnuname == 'New Issue' ? 'active' : '' }}
{{ $mnuname == 'Issue' ? 'active' : '' }}
">
<a href="#">
<i class="fa fa-bug"></i> <span>System Issues</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li class="{{ $mnuname == 'New Issue' ? 'active' : '' }}">
<a href="{{ route('admin.issues.create') }}" onclick="return LoadingOverlay();">
<i class="fa fa-edit"></i>
<span>Report an Issue</span>
</a>
</li>
@can($global_user->role != 3)
<li class="{{ $mnuname == 'Issue' ? 'active' : '' }}">
<a href="{{ route('admin.issues') }}" onclick="return LoadingOverlay();">
<i class="fa fa-list"></i>
<span>Issue Tracker</span>
</a>
</li>
@endcan
</ul>
</li>
@endif
解决方案
@if
指令用于渲染刀片模板中的条件部分。and@can
指令用于authorize
基于laravel 中的Gate
and的用户。Policy
@if 指令示例
@if($global_user->role == admin)
//only to shows this portion to admin user
@endif
@can 指令示例
@can($global_user->role == admin)
//here this portion verify by Gate and policy and middleware only ADMIN role to perform on this portion.
@endcan
推荐阅读
- arangodb - 如何使用现有集合(文档和边)创建图表
- sql - 无法使用 AS 设置新列名
- java - 从池中取消 CallableStatement
- git - 为什么 git 不输出我提交的消息?
- python - python - 断言复数几乎相等
- amazon-web-services - 在 AWS Secrets Manager 中创建密钥
- python-3.x - 如何解决 pandas 数据框列无法识别其价值
- reactjs - 在反应js中的单击按钮上生成pdf
- android - Android 设备 FPS 计算
- swift - Swift Firebase 观察单个事件只看第一个孩子