Laravel当前路线名称包含

时间:2019-09-27 23:27:49

标签: laravel

我有一组这样的路线:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.time.LocalDate` (no Creators, like default construct, exist): no String-argument constructor/factory method to deserialize from String value ('19440912').

在我的侧边栏中,我想突出显示用户单击以下任意一条路线时所在的区域:

Route::group(['prefix' => 'messages'], function () {
    Route::post('/', ['as' => 'messages.store', 'uses' => 'MessagesController@store']);
    Route::get('{id}', ['as' => 'messages.show', 'uses' => 'MessagesController@show']);
    Route::put('{id}', ['as' => 'messages.update', 'uses' => 'MessagesController@update']);
    Route::get('{id}/read', ['as' => 'messages.read', 'uses' => 'MessagesController@read']); // ajax + Pusher
});

如果路线为“邮件”,则此方法有效。有没有办法像Route :: currentRouteNameContains这样呢?显然这不是Laravel方法,但是如果它包含消息则如何激活它呢?

2 个答案:

答案 0 :(得分:2)

请参见str_contains辅助功能

<li class="d-flex flex-column {{ str_contains(Route::currentRouteName(), 'messages') ? 'active' : '' }}">

请注意,即使路由为/user/chat/messages/unread(可能不是您想要的),这也将返回true

您可以看一下starts_with

<li class="d-flex flex-column {{ starts_with(Route::currentRouteName(), 'messages') ? 'active' : '' }}">

Laravel 6位用户

默认安装中不再附带帮助程序功能

您需要安装laravel/helpers软件包

composer require laravel/helpers

希望这会有所帮助

答案 1 :(得分:0)

您也可以使用 getPrefix()帮助器功能。

{{ request()->route()->getPrefix() === '/messages' ? 'active' : '' }}

您也可以使用 Route 外墙来执行此操作。结果将与第一个相同

{{ Route::current()->getPrefix() === '/messages' ? 'active' : '' }}

或结合如下所示的 basename()

{{ basename(request()->route()->getPrefix()) === 'messages' ? 'active' : '' }}