laravel 刀片 - 如何隐藏特定路线的 html 元素的显示
Posted
技术标签:
【中文标题】laravel 刀片 - 如何隐藏特定路线的 html 元素的显示【英文标题】:laravel blade - how to hide the display of an html element for specific routes 【发布时间】:2019-02-05 18:12:05 【问题描述】:伙计们!
我正在使用安装了 Hyn Laravel-Tenancy 的 Laravel 5.6。
我有一个对所有租户(子域)都相同的主菜单,但是,对于一个或另一个特定租户(子域),我希望从该主菜单中显示一些项目,但对于所有其他租户,即使通过 url 调用,这些菜单项也不可见且无法访问。
在 Blade 上,我使用了“@if route::has”,但即使将该路由限制为特定子域,该路由也可用于所有其他子域,因此 @if 接收为 true 并最终显示菜单项目。
我没有找到一个简单的解决方案,可以创建一个标识 url 的帮助程序,如果它来自特定的子域,则会显示该项目并且不会显示其他子域,但“我猜”它应该有一个使用 Blade 和 "routes\web" 的原生表单来实现这个结果。
谢谢!!!
【问题讨论】:
您可能需要在这里自己编写一个辅助函数,因为 Blade 需要通过某种方式来了解要为哪些租户展示它。看起来该包有一种识别当前租户的方法,您可以在刀片文件中执行此操作并将其传递回您的助手。例如。@if(app(\Hyn\Tenancy\Environment::class)->tenant() == 'specialTenant') //show nav @endif
laravel-tenancy.com/docs/hyn/5.2/…
laravel.com/docs/5.6/authorization 使用门来确定他们是否可以查看链接,然后您可以简单地执行@can('gate-name') 显示链接@endcan
【参考方案1】:
在 laravel 中使用 gate 和 can 在 authserviceprovider 中创建一个这样的门:
$gate->define('see-menu',function()
//check domains or rules or every thing that you need to check to obtain access
//return true if user have access and false if not access
);
在你的视图中使用可以检查查看菜单
@can('see-menu')
//your code
<li class="devider"></li>.......
@endcan
【讨论】:
【参考方案2】:你可以这样做,我有我的路线“管理部门 listOfTeachers”,用户可以看到侧面菜单的按钮并使用它
@if(Request::is('admin') || Request::is('department') || Request::is('listOfTeachers'))
<div id="mySidenav" class="sidenav">
<a href="javascript:void(0)" class="closebtn" onclick="closeNav()" style="font-size:40px;">×</a>
<a href=" url('main') " style="margin-top:30%;text-align: right;" class="sidenavbuttons"><p id="poficon2" style="font-family: AwesomeFont;font-size: 27px; float: right;width:auto;height:auto;padding-left: 15px;padding-right: 20px;" class="colorIcon" id="newbornbaby"></p><p style="font-size: 23px;">الرئيسية</p></a>
<a href=" url('listOfCandidates') " style="text-align: right;" class="sidenavbuttons"><p id="poficon2" style="font-family: AwesomeFont;font-size: 27px; float: right;width:auto;height:auto;padding-left: 15px;padding-right: 20px;" class="colorIcon" id="newbornbaby"></p><p style="font-size: 23px;">قائمة المترشحين</p></a>
<a href=" url('listOfTeachers') " style="text-align: right;" class="sidenavbuttons"><p id="poficon2" style="font-family: AwesomeFont;font-size: 27px; float: right;width:auto;height:auto;padding-left: 15px;padding-right: 20px;" class="colorIcon" id="newbornbaby"></p><p style="font-size: 23px;">قائمة الاساتذة</p></a>
<a href=" url('department') " style="text-align: right;" class="sidenavbuttons"><p id="poficon2" style="font-family: AwesomeFont;font-size: 27px; float: right;width:auto;height:auto;padding-left: 15px;padding-right: 20px;" class="colorIcon" id="newbornbaby"></p><p style="font-size: 23px;">الشعب و التخصصات</p></a>
<a href=" url('workersAccounts') " style="text-align: right;" class="sidenavbuttons"><p id="poficon2" style="font-family: AwesomeFont;font-size: 27px; float: right;width:auto;height:auto;padding-left: 15px;padding-right: 20px;" class="colorIcon" id="newbornbaby"></p><p style="font-size: 23px;">حسابات العمال</p></a>
</div>
<div class="centerVertical" style="float:right;margin-right:1.2rem;" onclick="openNav()">
<img src="../resources/images/menu.png" style="margin-top:3px;float:left;width:27px;height:20px;background-size: contain;background-repeat: no-repeat;" >
</div>
@endif
【讨论】:
以上是关于laravel 刀片 - 如何隐藏特定路线的 html 元素的显示的主要内容,如果未能解决你的问题,请参考以下文章