Laravel 5 Laravel 5.3:当请求与URL(语言)匹配时,如何将导航菜单标记为活动

Laravel 5 Laravel 5.3:当请求与URL(语言)匹配时,如何将导航菜单标记为活动,laravel-5,locale,multilingual,Laravel 5,Locale,Multilingual,当URL与请求匹配时,我想将导航菜单标记为“活动” 这很好: <div class="sidebar"> <ul class="sidebar-menu"> <li {{{ (Request::is('en/dashboard') ? 'class=active' : '') }}}> <a href="/{{ App::get

当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' : '') }}}>


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

通常,我有一个布局,其中包含由当前视图扩展的导航项目,因此类似于:

<li><a href="{{ url("home") }}>Home</a></li>
<li><a href="{{ url("about") }}>About</a></li>
<li><a href="{{ url("contact") }}>Contact</a></li>
然后在我的控制器中:

public function getHome(){
    return view("home")->with(["page" => "home"]);
}
现在,我的视图
home.blade.php
有一个
$page
被传递给它,并且由于它使用nav部分扩展了
.blade
文件(通常是
@extends(“layouts.master”)
或其他内容),您可以访问
$page
变量并根据这些nav项进行检查:

<li class="{{ $page == "home" ? "active" : "" }}><a href="{{ url("/home") }}>Home</a></li>

通常,我有一个布局,其中包含由当前视图扩展的导航项目,因此类似于:

<li><a href="{{ url("home") }}>Home</a></li>
<li><a href="{{ url("about") }}>About</a></li>
<li><a href="{{ url("contact") }}>Contact</a></li>
然后在我的控制器中:

public function getHome(){
    return view("home")->with(["page" => "home"]);
}
现在,我的视图
home.blade.php
有一个
$page
被传递给它,并且由于它使用nav部分扩展了
.blade
文件(通常是
@extends(“layouts.master”)
或其他内容),您可以访问
$page
变量并根据这些nav项进行检查:

<li class="{{ $page == "home" ? "active" : "" }}><a href="{{ url("/home") }}>Home</a></li>

这很简单。只需在包含标题或导航栏以及链接的文件中执行以下操作:

<li class="{{ (Request::path()=='nameofyourfile' ? 'active' : '') }}">
 <a href="{{ route('nameofyourfile') }}">
                        <span class="icon fa fa-building-o" aria-hidden="true"></span><span class="title">nameofyourfile</span>
                                                </a></li>

  • 这很简单。只需在包含标题或导航栏以及链接的文件中执行以下操作:

    <li class="{{ (Request::path()=='nameofyourfile' ? 'active' : '') }}">
     <a href="{{ route('nameofyourfile') }}">
                            <span class="icon fa fa-building-o" aria-hidden="true"></span><span class="title">nameofyourfile</span>
                                                    </a></li>
    

  • 我现在使用的是这个解决方案,它工作得很好,并且可以保持刀片清洁

    首先,在
    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');
    
    当您有一个多语言站点时,这个解决方案也非常有用,因为您不必使用正则表达式来确定它现在是否是匹配的URL。您还可以编辑和更新您的路由URL到您想要的任何位置,而无需更新所有刀片服务器,因为URL已更改。
    route()
    函数返回autom。更新的URL和
    Route::currentRouteName()
    函数始终返回路由的设置名称。:)

    正如多语言网站的提示:您只需用语言变量替换静态文本
    Users

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

  • 有关本地化的更多信息,请查看我现在使用的

    解决方案,该解决方案运行良好,可保持刀片清洁

    首先,在
    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');
    
    当您有一个多语言站点时,这个解决方案也非常有用,因为您不必使用正则表达式来确定它现在是否是匹配的URL。您还可以编辑和更新您的路由URL到您想要的任何位置,而无需更新所有刀片服务器,因为URL已更改。
    route()
    函数返回autom。更新的URL和
    Route::currentRouteName()
    函数始终返回路由的设置名称。:)

    正如多语言网站的提示:您只需用语言变量替换静态文本
    Users

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

  • 有关本地化的更多信息,请查看

    只需在helpers类中删除此小函数代码

    function is_current_route($route){
        return Route::currentRouteName() == $route ? 'class=active' : '';
    }
    
    并在视图中这样使用它

    <li {{is_current_route('your-route-name-here')}}>
    <a href="{{ url("/home") }}>Home</a>
    </li>
    
    
    
    
    只需将此小函数代码放到helpers类中即可

    function is_current_route($route){
        return Route::currentRouteName() == $route ? 'class=active' : '';
    }
    
    并在视图中这样使用它

    <li {{is_current_route('your-route-name-here')}}>
    <a href="{{ url("/home") }}>Home</a>
    </li>
    
    
    
    
    您如何检测语言并将导航菜单(如“设置”)更改为德语版本的“Einstellungen”?使用
    trans()
    ,以及
    en
    fr
    等文件夹(不确定德语的语言代码是什么),然后你会看到这样的链接:
    你必须阅读文档才能更好地处理本地化问题,你如何检测语言并将导航菜单(如“设置”)更改为德语版本的“Einstellungen”?这是使用
    trans()
    ,带有
    en
    fr
    文件夹来处理的,ect等(不确定德语的语言代码是什么),然后你会看到这样的链接:
    你必须阅读文档才能更好地处理本地化问题为什么我要将函数
    Route::currentRouteName()
    添加到helper类中,而你已经可以在视图中开箱即用了?示例:
  • 。另请参见顶部的解决方案。如果我重复
    is\u current\u route('your-route-name-here')
    route::currentRouteName()=='users overview',请不要每次重复您的代码活动“:”
    不会有太大变化,但是添加这个额外的函数