动态改变div值,laravel刀片上的导航栏

时间:2015-11-07 09:50:30

标签: php laravel navigation blade

我目前正在使用laravel blade,目前我正在使用自举工具和刀片模板。

希望导航按钮能够与所选页面一起动态交互

<div class="navbar">
    <nav class="navbar navbar-inverse navbar-fixed-top">
        <div class="container-fluid">
            <div class="navbar-header">
                  <a class="navbar-brand" href="#"><b>iMakan</b></a>
           </div>
    <div>
  <ul class="nav navbar-nav navbar-right">
    <li><a class="active "href="/">Home</a></li>
    <li><a href="about">About Us</a></li>
    <li><a href="contact">Contact Us</a></li>
    <li><a href="auth/login">Login</a></li>
    <li><a href="503">Cart</a></li>
  </ul>
</div>
</div>
</nav>
</div>

3 个答案:

答案 0 :(得分:6)

Laravel提供了一个可以使用的内置函数:Request::is()

来自API docs

  

确定当前请求URI是否与模式匹配。

你使用的是这样的:

Request::is('about'); // returns a boolean

<a href="about" @if(Request::is('about')) class="active" @endif>

您可以编写辅助函数来处理它:

function isActive($path, $class = 'active')
{
    return (Request::is($path)) ? $class : '';
}

将其放在helpers.php目录中名为app的文件中,并将其包含在composer.json的自动加载部分中,如下所示:

"autoload": {
    "files": [
        "app/helpers.php"
    ]
},

也许您需要在终端中执行composer dump-autoload

最后像这样使用它:

<a href="about" class="{{ isActive('about') }}">About</a>

答案 1 :(得分:0)

这是我的方式我做什么,你也应该遵循这个

如果你的网址的最后一部分如home为主页,aboutus为关于我们,那么你可以这样做

第1步:

获取请求Uri

$_SERVER['REQUEST_URI']

第2步:

在你class内,你可以有这个条件

<?php if ($_SERVER['REQUEST_URI']=='/') { echo 'active'; } ?>

所以你将有

<li><a href="about" class='<?php if ($_SERVER['REQUEST_URI']=='/') { echo 'active'; } ?>' >About Us</a></li>

条件将根据您的uri

回显active

所以你会有这样的东西

<ul class="nav navbar-nav navbar-right">
    <li><a class="<?php if ($_SERVER['REQUEST_URI']=='/') { echo 'active'; } ?>" href="/">Home</a></li>
    <li><a class='<?php if ($_SERVER['REQUEST_URI']=='/aboutus') { echo 'active'; } ?>'href="about" >About Us</a></li>
    <li><a class='<?php if ($_SERVER['REQUEST_URI']=='/contactus') { echo 'active'; } ?>'href="contact">Contact Us</a></li>
    <li><a class='<?php if ($_SERVER['REQUEST_URI']=='/login') { echo 'active'; } ?>' href="auth/login">Login</a></li>
    <li><a class='<?php if ($_SERVER['REQUEST_URI']=='/cart') { echo 'active'; } ?>' href="503">Cart</a></li>
  </ul>

然后,您将根据您的网址获得class='active'

希望这会对你有所帮助。

答案 2 :(得分:0)

您可以使用package,但只使用laravel提供的内容我会建议如下:

<a href="{{ URL::route('home') }}" 
   class="{{ Route::current()->getName() === 'home' ? : 'active' : ''">Home</a>

使用URL::route(...)将根据路由名称创建一个URL,您可以检查此名称当前是否与providec检查​​一起使用。要命名路线,请阅读laravel documentation about routing.