Маршрут Laravel возвращает 404 - PullRequest
0 голосов
/ 24 октября 2018

Я смотрю вслепую на предположительно легкий вопрос.Я определил следующие маршруты в моем файле web.php.

Route::resource('objects', 'ObjectController');
Route::get('objects/grid','ObjectController@grid')->name('objects.grid');

Это приводит к следующему списку маршрутов:

MACBOOKPRO:laravel-test user$ php artisan route:list
+--------+-----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
| Domain | Method    | URI                    | Name             | Action                                                                 | Middleware   |
+--------+-----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
|        | GET|HEAD  | objects                | objects.index    | App\Http\Controllers\ObjectController@index                            | web         |
|        | POST      | objects                | objects.store    | App\Http\Controllers\ObjectController@store                            | web         |
|        | GET|HEAD  | objects/create         | objects.create   | App\Http\Controllers\ObjectController@create                           | web         |
|        | GET|HEAD  | objects/grid           | objects.grid     | App\Http\Controllers\ObjectController@grid                             | web         |
|        | DELETE    | objects/{object}       | objects.destroy  | App\Http\Controllers\ObjectController@destroy                          | web         |
|        | GET|HEAD  | objects/{object}       | objects.show     | App\Http\Controllers\ObjectController@show                             | web         |
|        | PUT|PATCH | objects/{object}       | objects.update   | App\Http\Controllers\ObjectController@update                           | web         |
|        | GET|HEAD  | objects/{object}/edit  | objects.edit     | App\Http\Controllers\ObjectController@edit                             | web         |
+--------+-----------+------------------------+------------------+------------------------------------------------------------------------+--------------+

Переход к http://localhost:8000/objects/grid всегдавернуть страницу 404.Поэтому должен быть конфликт с другими маршрутами.Если я поменяю 'objects / grid' на 'object / grid' и тогда это сработает.

Вторая пара глаз приветствуется.

1 Ответ

0 голосов
/ 24 октября 2018

Вам просто нужно изменить порядок вашего файла маршрута:

Route::get('objects/grid','ObjectController@grid')->name('objects.grid');
Route::resource('objects', 'ObjectController');

Ресурсы маршрута должны быть помещены внизу списка маршрутов.Это потому, что нет никакой разницы между объектами GET / {object} и объектами / сеткой GET или даже объектами / create.Если он будет искать объекты маршрута / сетку и объекты / {объект} выше в списке, он будет считать, что сетка является {объектом}, и пойдет по этому маршруту.

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