8

我正在检查刀片模板中的路由,以li使用以下代码将活动类添加到我的菜单中的特定类:

<ul>
    <li class="{{ Request::is('*/sobre') || Request::is('*') ? "active" : "" }}">
        <a href="{{ Route::getCurrentRoute()->parameters()['domain'] . "/sobre" }}">Sobre o salão</a>
    </li>
    <li class="{{ Request::is('*/servicos') ? "active" : "" }}">
        <a href="{{ Route::getCurrentRoute()->parameters()['domain'] . "/servicos" }}">Serviços</a>
    </li>
    <li class="{{ Request::is('*/avaliacoes') ? "active" : "" }}">
        <a href="{{ Route::getCurrentRoute()->parameters()['domain'] . "/avaliacoes" }}">Avaliações</a>
    </li>
    <li class="{{ Request::is('*/galeria') ? "active" : "" }}">
        <a href="{{ Route::getCurrentRoute()->parameters()['domain'] . "/galeria" }}">Fotos</a>
    </li>
</ul>

这些是路线:

Route::group(['prefix' => '{domain}', 'middleware'=>'salao'], function () {
    Route::get('/', 'Frontend\FrontendSalaoController@sobre');
    Route::get('sobre', 'Frontend\FrontendSalaoController@sobre');
    Route::get('servicos', 'Frontend\FrontendSalaoController@servicos');
    Route::get('avaliacoes', 'Frontend\FrontendSalaoController@avaliacoes');
    Route::get('galeria', 'Frontend\FrontendSalaoController@galeria');
});

当我访问 routehttp://website/x或 routehttp://website/x/sobre时,活动类的位置正确。但是,如果我访问该http://website/x/servicos路由,则该类将添加到第一个 li 和servicosli 中。

我该如何处理?

4

1 回答 1

9

Request::is('*')实际上匹配所有内容,因此第一项将始终具有活动类。相反,您应该检查'/'

<li class="{{ Request::is('*/sobre') || Request::is('/') ? "active" : "" }}">

is方法甚至支持多个参数,其中只有一个必须匹配,因此您可以将其缩短为:

<li class="{{ Request::is('*/sobre', '/') ? "active" : "" }}">
于 2015-09-26T19:34:12.990 回答