【问题标题】:Changing div value dynamically, navigation bar on laravel blade动态更改div值,laravel刀片上的导航栏
【发布时间】:2015-11-07 09:50:30
【问题描述】:

我目前正在使用 laravel 刀片,并且我目前实现了引导程序和刀片模板。

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

<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>

【问题讨论】:

  • “与所选页面一起动态交互”是什么意思?

标签: php laravel navigation blade


【解决方案1】:

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 : '';
}

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

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

也许您需要在终端中输入composer dump-autoload


最后像这样使用它:

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

【讨论】:

  • 太好了!如果它帮助您解决问题,请不要忘记将答案标记为“已接受”。谢谢!
【解决方案2】:

这是我的方式,你也应该这样做

如果你有像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'

希望对你有所帮助。

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-02-28
      • 2022-01-12
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      相关资源
      最近更新 更多