Laravel 5 Laravel 5.3:当请求与URL(语言)匹配时,如何将导航菜单标记为活动
当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
<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',请不要每次重复您的代码活动“:”
不会有太大变化,但是添加这个额外的函数