Динамическое изменение значения div, панель навигации на лезвии laravel
В настоящее время я использую блейд 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>
3 answers
Laravel предоставляет встроенную функцию, которую вы можете использовать: Request::is()
.
Определите, соответствует ли текущий 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>
Вот мой путь, Что я делаю, Вы тоже должны следовать этому
Если у вас есть последняя часть URL-адреса, например 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>
Условие будет повторяться active
в соответствии с вашим uri
Таким образом, у вас будет что-то такое
<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'
в соответствии с вашим URL-адресом.
Надеюсь, это поможет вам.
Существует пакет , который вы можете использовать, но, используя только то, что предоставляет laravel, я бы предложил следующее:
<a href="{{ URL::route('home') }}"
class="{{ Route::current()->getName() === 'home' ? : 'active' : ''">Home</a>
Использование URL::route(...)
создаст URL-адрес на основе имени маршрута, и вы можете проверить, используется ли это имя в настоящее время с помощью проверки providec. Чтобы назвать маршрут, прочитайте документацию laravel о маршрутизации.