我有以下代码,效果非常好。
我的setActive()
功能:
function setActive($path, $nav = 'class=active')
{
return Request::fullUrl() === $path ? $nav : '';
}
我怎么称呼它:
<li {{ setActive(route('home')) }}>
<a href="{{ route('mod.banned.index') }}">
Home
</a>
</li>
因此,每当页面成为主页时,它都会将其设置为活动状态。
但是,如果我想让它工作,它对子页面不起作用。例如,如果我有/articles/article-1
,/articles/article-2
,并且无论什么文章,我都希望文章标签被标记为有效。
我想做类似的事情:
setActive(route('articles.index') . '/*')
// 'articles.index' route = /articles/
// Should be active if -> /anything/after/the/slash/
我希望这是有道理的。
我怎样才能做到最好?
感谢。
答案 0 :(得分:0)
这对我有用:
function setActive($path, $nav = 'class=active')
{
return preg_match("/".preg_quote($path, '/')."\S*/", Request::fullUrl()) ? $nav : '';
}
答案 1 :(得分:0)
您可以使用https://github.com/letrunghieu/active Laravel 4/5应用程序的辅助类是在当前路由上获得活动类。
答案 2 :(得分:0)
我会做一些事情,比如向Views添加一个全局变量并在任何地方使用它
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
view()->composer('*', function ($view) {
$view->with('active_route', \Route::currentRouteName());
});
}
}
刀片视图中的。它简单得多。可能会帮助某人;)
<ul>
<li class="{{ $active_route == "home" && "active" }}"> Home </li>
</ul>