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 @endiflaravel-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;">&times;</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 元素的显示的主要内容,如果未能解决你的问题,请参考以下文章

刀片中的 Laravel 8 路线

Laravel - 检查刀片上的路线

在刀片视图中显示路线的结果(Laravel)

Laravel 模板显示路线中的两个刀片模板

laravel 制作自己的刀片文件路径

如何在 Laravel 中添加(刀片引擎?)