【问题标题】:How to put active bootstrap class on li element depending on the page [closed]如何根据页面将活动引导类放在 li 元素上[关闭]
【发布时间】:2018-08-28 06:46:05
【问题描述】:

标题可能看起来很奇怪,但我会尝试简要解释一下...所以在我的管理部分中,我扩展了一个布局,其中边栏显示为每个页面上的引导列表。

根据我所在的页面,我想在特定的 li 上放置一个活动类,但我不确定在 Laravel 项目中执行此操作的常用方法是什么..

我想过在每个页面都放一个js脚本,但这一点都不聪明……

所以我想请你的建议,谢谢。

【问题讨论】:

标签: css html laravel bootstrap-4


【解决方案1】:

我对 PHP/Laravel 并没有太多经验,但我认为最好的方法是获取您的路线并进行检查

<li{{ $pageRoute == 'yourPage' ? ' class="active"' : '' }}>

【讨论】:

  • 这就是我需要的:
  • 当路由中有通配符时,你怎么能做到这一点?喜欢user/edit/{id}
  • 也许您可以使用 preg_match 来检查链接上是否存在表达式“/yourId”
  • 【解决方案2】:

    App 文件夹中添加一个帮助文件,创建一个函数以在您想要的元素中添加类。

    您可以按照以下步骤操作:

    1. App 文件夹中创建一个新文件。示例:helpers.php
    2. helpers.php里面添加这段代码:

      function isActive($path, $active = 'active'){
          return call_user_func_array('Request::is', (array)$path) ? $active : '';
      }
      
    3. 将文件添加到composer.json。每当项目运行时,它将自动加载helpers.php。在composer.json 中添加这些行

      "autoload": {
          ...
          "files": [
              "app/helpers.php" //warning: sometimes filename may case sensitive depending on your server
          ]
      },
      
    4. 然后,转到控制台并运行composer dump-autoload

    5. 现在,您可以使用isActive() 函数了。例如:

      <li class="nav-parent {{ isActive('products') }}">
      

    更多提示:

    您可以在isActive() 函数中使用通配符,例如isActive('product*')* 表示通配符。

    你甚至可以在isActive() 函数中传递一个路由数组。示例:

    <li class="nav-parent {{ isActive(['*product*','brand*','color*','size*','*categor*']) }}">
    

    【讨论】:

    • 好主意,谢谢。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签