我有一组这样的路线:
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方法,但是如果它包含消息则如何激活它呢?
答案 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/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' : '' }}