Я пытаюсь создать ссылки в верхнем меню навигации, используя код, чтобы проверить, есть ли в имени маршрута текстовый шаблон.

Все работает, кроме одного маршрута, который также определен как ресурс.

Ниже мой код в файле web.php

 Route::get('/bookings', 'BookingController@index')->name('bookings');
 Route::resource('/bookings', 'BookingController');

В файле app.blade.php у меня есть код:

@if (Route::has('bookings'))
  <li class="nav-item">
    <a class="nav-link" href="{{ route('bookings') }}">{{ __('Bookings') }}</a>
  </li>
@endif            

Я проверил маршруты в php artisan, и они указаны как существующие.

| api,auth:api |
|        | POST      | bookings                | bookings.store   | App\Http\Controllers\BookingController@store                           | web          |
|        | GET|HEAD  | bookings                | bookings.index   | App\Http\Controllers\BookingController@index                           | web          |
|        | GET|HEAD  | bookings/create         | bookings.create  | App\Http\Controllers\BookingController@create                          | web          |
|        | PUT|PATCH | bookings/{booking}      | bookings.update  | App\Http\Controllers\BookingController@update                          | web          |
|        | GET|HEAD  | bookings/{booking}      | bookings.show    | App\Http\Controllers\BookingController@show                            | web          |
|        | DELETE    | bookings/{booking}      | bookings.destroy | App\Http\Controllers\BookingController@destroy                         | web          |
|        | GET|HEAD  | bookings/{booking}/edit | bookings.edit    | App\Http\Controllers\BookingController@edit
1
Kinnara 26 Окт 2019 в 21:46

1 ответ

Лучший ответ

Route::has('bookings') проверяет список маршрутов на наличие маршрута с именем bookings. Хотя у вас есть URL-адрес bookings, его имя в списке маршрутов - bookings.index - у вас нет маршрута с именем bookings.

(Согласно выходным данным php artisan route:list, ваш маршрут от вызова Route::resource стирает предыдущий вызов Route::get. Удалите это повторяющееся / игнорируемое определение Route::get.)

Route::has('bookings.index') должен помочь (и изменение route('bookings') на route('bookings.index').

1
ceejayoz 26 Окт 2019 в 19:41