laravel 4中的活动链接

Jos*_*ers 5 blade laravel-4

在我的master.blade.php文件中,我有一个导航,我试图把它放在一起.

    <nav class="navbar navbar-default" role="navigation">
  <div class="container-fluid">
  <div class="col-sm-5">
    <ul class="nav navbar-nav" >
      <li class="{{ Route::current( 'home.index') ? 'active' : '' }}">{{ HTML::linkAction('HomeController@index', 'Home') }}
      <li><a href="">Locations</a></li>
      <li class="{{ Route::current( 'order.index') ? 'active' : '' }}">{{ HTML::linkAction('OrderController@index', 'Order Online') }}
    </ul>
  </div>
  <div class="col-sm-5 navbar-right">
    <ul class="nav navbar-nav navbar-right">
      <li class="{{ Route::current( 'menu.index') ? 'active' : '' }}">{{ HTML::linkAction('MenuController@index', 'Menu') }}
      <li><a href="">About</a></li>
      <li><a href="">Contact Us</a></li>
    </ul>
  </div>
  <div class="container-fluid">
</nav>
Run Code Online (Sandbox Code Playgroud)

这里的问题是所有这些都设置为激活.不是当前页面.我究竟做错了什么?

Lyn*_*ais 18

或者只是使用三元操作:

<li {{ (Request::is('*login') ? 'class="active"' : '') }}>Login</li>
Run Code Online (Sandbox Code Playgroud)


Jar*_*zyk 10

这件作品返回了对象

Route::current( 'home.index')
Run Code Online (Sandbox Code Playgroud)

改为

Route::currentRouteName() == 'home.index'
Run Code Online (Sandbox Code Playgroud)

我建议使用它的辅助函数,看起来像这样:

function setActive($route, $class = 'active')
{
    return (Route::currentRouteName() == $route) ? $class : '';
}
Run Code Online (Sandbox Code Playgroud)

以上是Jeffrey在http://laracasts.com上的积分


您可以将助手放在例如app/helpers.php中,然后需要将其添加到/composer.json中的自动加载中,如此

...
"autoload": {
    "classmap": [
        ...
    ],
    "files": [
        "app/helpers.php"
    ]
}
Run Code Online (Sandbox Code Playgroud)

  • https://laracasts.com/lessons/active-states我不确定它是否是免费的,但是laracasts值得花一些钱.你的助手功能可以随心所欲,一秒钟内完成编辑 (3认同)
  • 嗯,我是laravel的新手 - 我在哪里放一个辅助功能?你能把我和他的视频联系起来吗?很棒的答案! (2认同)

ssi*_*nik 0

Lynnais 和 Jarek Tkaczyk 都有正确答案。但这里的工作是
创建一个文件或类。如果使用类可以创建一个静态函数,其名称可以是您想要的任何名称。并将文件名或类文件夹添加到composer.json中。

...
“自动加载”:{
    “类映射”:[
        ... ,
        “应用程序/助手”
    ],
    “文件”:[
        “应用程序/helpers.php”
    ]
}

这里,app/helpers是包含稍后可以用作帮助器类的类的文件夹,app/helpers.php是带有方法的纯 PHP 文件。请参阅'app/helpers'"files"之前的逗号。创建一个这样的类。

namespace App\Helper;
class Helper{
    public static function set_active($route){
        return (\Request::is($route.'/*') || \Request::is($route)) ? "active" : '';
    }
}
Run Code Online (Sandbox Code Playgroud)

现在只要你想从视图中这样调用它

<ul class="nav navbar-nav">
    <li class="dropdown {{ \App\Helper\Helper::set_active('/') }}"> {{ HTML::decode(HTML::link('/','<i class="fa fa-home"></i> Home  ', array('class' => 'dropdown-toggle'))) }} </li>
    <li class="dropdown {{ \App\Helper\Helper::set_active('admins') }}"> {{ HTML::decode(HTML::link('/admins','<i class="fa fa-user"></i> Admins  ', array('class' => 'dropdown-toggle'))) }} </li>                
</ul>
Run Code Online (Sandbox Code Playgroud)

或者

<li class="{{\App\Helper\Helper::set_active('/')}}">Home</li>
<li class="{{\App\Helper\Helper::set_active('admins')}}">Admins</li>
Run Code Online (Sandbox Code Playgroud)

快乐编码。:)