Laravel имя текущего маршрута содержит - PullRequest
1 голос
/ 28 сентября 2019

У меня есть группа таких маршрутов:

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
});

На боковой панели я бы хотел выделить область, в которой находится пользователь, когда он нажимает на любой из этих маршрутов:

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

Это сработало бы, если бы маршрут был «сообщения».Я могу сделать это так, чтобы он походил на Route :: currentRouteNameContains ... Очевидно, что это не метод Laravel, но как я могу сделать его активным, если он СОДЕРЖИТ сообщения?

1 Ответ

2 голосов
/ 28 сентября 2019

См. str_contains вспомогательная функция

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

Остерегайтесь, что это вернет true, даже если маршрут /user/chat/messages/unread, что, вероятно, не то, что вы хотите

Вы sets_with

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

Пользователи Laravel 6

Вспомогательные функции больше не поставляются с установкой по умолчанию

Вам необходимо установить laravel / helpers пакет

composer require laravel/helpers

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...