gpt4 book ai didi

laravel-5 - Laravel 5.3 : How-to mark navigation menu as active, 请求匹配URL时(带语言)

转载 作者:行者123 更新时间:2023-12-02 17:22:56 25 4
gpt4 key购买 nike

当 URL 与请求匹配时,我想将导航菜单标记为“事件”。

这工作正常:

    <div class="sidebar">
<ul class="sidebar-menu">
<li {{{ (Request::is('en/dashboard') ? 'class=active' : '') }}}>
<a href="/{{ App::getLocale() }}/dashboard">
<i class="fa fa-dashboard"></i> <span>{{ trans('sidebar.dashboard') }}</span>
</a>
</li>

<li {{{ (Request::is('en/settings') ? 'class=active' : '') }}}>
<a href="/{{ App::getLocale() }}/settings">
<i class="fa fa-gears"></i> <span>{{ trans('sidebar.settings') }}</span>
</a>
</li>
</ul>
</div>

不幸的是,当 URL 使用语言代码“en”时,它只能工作并标记导航菜单。但是我怎样才能用更动态的东西替换静态字符串“en”呢?

我已经尝试使用这段代码来解决这个问题,但它不起作用:

    <li {{{ (Request::is('{{ App::getLocale() }}/dashboard') ? 'class=active' : '') }}}>

解决这个问题的最佳方法是什么?

最佳答案

我现在正在使用这种解决方案,效果非常好并且可以保持 Blade 清洁。

首先,在 routes/web.php 中为每条路线指定一个唯一的名称:

    <?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/admin/dashboard', 'DashboardController@getAll')->name('dashboard');
Route::get('/admin/maintenances', 'MaintenanceController@get')->name('maintenances-overview');
Route::get('/admin/users', 'UserController@getUsers')->name('users-overview');

在您的导航 Blade 中(例如。resources/views/layouts/admin/navbar.blade.php),您现在可以简单地引用这些名称:

    <li class="{{ Route::currentRouteName() == 'dashboard' ? 'active' : '' }}">
<a href="{{ route('dashboard') }}">Dashboard</a>
</li>

<li class="{{ Route::currentRouteName() == 'maintenances-overview' ? 'active' : '' }}">
<a href="{{ route('maintenances-overview') }}">Maintenances</a>
</li>

<li class="{{ Route::currentRouteName() == 'users-overview' ? 'active' : '' }}">
<a href="{{ route('users-overview') }}">Users</a>
</li>

当您有一个多语言站点时,此解决方案也非常有用,因为您不必使用正则表达式来确定它现在是否是匹配的 URL。您还可以将路由 URL 编辑和更新为您想要的任何内容,而无需更新所有 Blade ,仅仅因为 URL 已更改。 route() 函数返回自动。更新后的 URL 和 Route::currentRouteName() 函数总是会返回您的路线的设置名称。 :)

正如多语言站点的提示:您可以简单地将静态文本 Users 替换为语言变量:

    <li class="{{ Route::currentRouteName() == 'users-overview' ? 'active' : '' }}">
<a href="{{ route('users-overview') }}">@lang('layouts/admin/navbar.users')</a>
</li>

有关本地化的更多信息,请查看 laravel.com localization documentation

关于laravel-5 - Laravel 5.3 : How-to mark navigation menu as active, 请求匹配URL时(带语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41231239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com