根据当前翻译的Laravel路线,在刀片中添加“活动”类

时间:2015-10-09 18:27:44

标签: php laravel blade laravel-5.1 laravel-routing

在Laravel 5.1中使用包mcamara/laravel-localization我设法本地化我的网站并翻译路线。问题现在如下:如何根据当前路由通过刀片模板添加自定义类“活动”?

到目前为止,我已尝试使用HTML :: macro,但似乎包laravelcollective/html:“5.1。*”与L5.1不完全兼容(尤其是宏)。

即使我设法使用宏,我也无法使用ffffffb3 * 4 -------- fffffecc + 8464 + 8 + -------- 8338 QED ,因为路由已被翻译。我很确定这必须是一个简单的方法...

Request::is('about')

4 个答案:

答案 0 :(得分:2)

试试这个!

<li class="@if (Request::is('/')) {{'active'}} @endif"><a href="/">Home <span class="sr-only">(current)</span></a></li>    
<li class="@if (Request::is('about')) {{'active'}} @endif"><a href="{{URL::to('/about')}}">About</a></li>
<li class="@if (Request::is('contact')) {{'active'}} @endif"><a href="{{URL::to('/contact')}}">Contact</a></li>

答案 1 :(得分:1)

在@keithm和here的鼓舞人心的帮助下,我做了以下工作:

首先使用新指令扩展刀片,直接在AppServiceProvider.php中构建

Blade::directive('activeState', function($expression) {
    return '<?php echo activeClass('. $expression . '); ?>';
});

然后在你的帮助文件中(如果你没有,你可以在app / Http / helpers.php中创建它)添加以下内容

function activeClass($url) {
    return Request::url() == $url ? 'active' : '';
} 

在刀片中直接使用以下指令:

<a href="{{ URL::route('front.portfolio.index') }}" class="nav-block @activeState(URL::route('front.portfolio.index'))">

答案 2 :(得分:0)

不确定我是否有您的问题,但这是您正在寻找的吗?

<span class="someClass @if (Request::url('/myurl') active @endif"></span>

很抱歉错过了这部分问题:)。

我没有以这种方式测试,但它应该有效:

@if (Request::url($variable or $pattern .'/restofuri')

答案 3 :(得分:0)

派对有点晚了,但我也遇到了同样的问题并用laravel帮助函数localizeURL和本地化包帮助函数<a href="{{LaravelLocalization::localizeURL(trans('routes.my-route'))}}" class="{{(url()->current() == LaravelLocalization::localizeURL(trans('routes.my-route'))) ? "active" : "" }}"> {{trans('navigation.my-route')}}</a>

解决了它
{{1}}