【问题标题】:Laravel get current routeLaravel 获取当前路线
【发布时间】:2015-12-04 21:01:32
【问题描述】:

我有一些导航链接,我想在 laravel 5 中获取当前路线,以便我可以在导航中使用 class active。以下是示例链接:

<li class="active"> <a href="/">Home</a> </li>
<li> <a href="/contact">Contact</a> </li>
<li> <a href="/about">About</a> </li>

如您所见,在Home 链接中有active class,这意味着它是当前选择的路线。但由于我使用的是laravel blade,因此我不会重复刀片中的每个导航链接,因此我不能使用活动类,因为我的template.blade.php 中只有导航链接。我怎样才能获得当前路线并检查它是否等于当前链接?提前谢谢你。

【问题讨论】:

  • 有没有考虑过用js改dom?
  • @mdamia,我已经解决了并发布了我的答案。

标签: php html laravel


【解决方案1】:

$uri = Request::path()

查看docs

【讨论】:

    【解决方案2】:

    您可以使用命名路由,例如

    Route::get('/', ['as'=>'home', 'uses'=>'PagesController@index']);
    

    然后在视图中您可以执行以下操作

     <li {!! (Route::is('home') ? 'class="active"' : '') !!}>
             {!! link_to_route('home', 'Home') !!}
            </li>
    

    【讨论】:

      【解决方案3】:

      所以我用一些小技巧让它工作。比如地址栏中的url是http://localhost:8000/tourism/places

      如果我使用Request::path() 方法,我将得到tourism/places。但是我想要得到的是tourism 部分,所以我所做的是:

      $currentPath = Request::path();
      
      $values = explode("/", $currentPath);
      
      $final = $values[0];
      

      现在$final 变量的值将是"tourism"

      现在为了全局加载变量,我将AppServiceProvider.php 中的代码包含在public function boot() 中。

      public function boot()
      {
          $currentPath = Request::path();
      
          $values = explode("/", $currentPath);
      
          $final = $values[0];
      
          view()->share('final', $final);
      }
      

      最后在我的刀片模板中,

      <li @if ($final== "tourism") class="active" @endif>
      <a href="/tourism/places">Places</a>
      </li>
      

      【讨论】:

        【解决方案4】:

        简单的方法总是更好,只需使用与生成链接相同的功能,它就会为您提供一切,包括flexibility to use wild cards

        <a class="nav-link {{ Request::url() === route("products.list", [$group_key]) ? 'active' : '' }}" 
            href="{{ route("products.list", [$group_key]) }}"
            >
            LInk text
        </a>
        

        另外,您仍然只有一个地方来管理 URL-s - 您的路由器文件。

        【讨论】:

          猜你喜欢
          • 2015-10-08
          • 2016-08-03
          • 2014-02-25
          • 2014-09-10
          • 1970-01-01
          • 2015-07-14
          • 2016-05-08
          • 2016-09-01
          • 2020-08-04
          相关资源
          最近更新 更多