Путь запроса не работает должным образом в Laravel 5.2 - PullRequest
1 голос
/ 23 октября 2019

Я пытаюсь использовать следующее условие if для отображения чего-либо, только если текущая страница имеет значение «results.blade.php»:

@if(Request::path() === 'results')
    <p> results page </p>
@else
     <p> Other page </p>
@endif

Ниже указан путь к результатам:

C:\xampp\htdocs\sharp\resources\views

Выводом всегда является «Другая страница», даже если открытая страница была страницей «результатов».

Маршрут следующий:

Route::get('/search', [
    'uses' => 'SearchController@getResults',
    'as' => 'results'
]);

Ответы [ 2 ]

2 голосов
/ 23 октября 2019

Вы путаете часть URL / пути с названием маршрута. Измените код на

@if(Request::path() === 'search')
    <p> results page </p>
@else
     <p> Other page </p>
@endif

и все должно работать как положено.

Из документации :

" Метод path возвращает URI запроса. "

Часть URI вашего маршрута - «/search» (которая также может быть записана как search). имя этого маршрута - "results", которое используется для ссылки на этот URI: return route('results'); выведет "http://localhost:8000/search"

Редактировать: Маршруты с параметрами:

Если у вас есть маршрут

Route::get('/user/{uid}', [
    'uses' => 'UserController@show',
    'as' => 'userprofile'
]);

, вы можете проверить маршрут конкретного пользователя (http://localhost/user/3), используя:

@if ( Request::path() == 'user/3')
<p>User Profile 3</p>
@else
<p>NOT User Profile 3</p>
@endif

Если вы хотите проверить любой маршрут пользователя (http://localhost/user/1, http://localhost/user/2 ...) используйте имя маршрута:

@if ( Request::route()->getName() == 'userprofile')
<p>User Profile</p>
@else
<p>NOT User Profile</p>
@endif
1 голос
/ 23 октября 2019

Итак, я проверил ваш код в моем laravel проекте. И для меня это работает нормально. Вы забыли опубликовать свой код SearchController здесь.

Проблема в том, что вы упоминаете маршрут под двумя разными именами. Вы должны использовать одно и то же имя в get('/search') и 'as'=>'search',

в моем файле web.php,

Route::get('/search', [
    'uses' => 'SearchController@getResults',
    'as' => 'search'
]);

В моем SearchController я просто перенаправил маршрут для просмотрафайл.

public function getResults() {
    return view('results');

}

и в моем results.blade.php я использовал тот же код, что и ваш:

@if(Request::path() === 'search')
    <p> search page </p>
@else
     <p> Other page </p>
@endif

Надеюсь, это будет полезно.

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