Как правильно использовать дополнительные параметры маршрута в Laravel 5.6? - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь создать API с помощью Laravel 5.6, однако мне кажется, что невозможно использовать необязательные параметры маршрута до / после параметра.

Я бы хотел добиться следующего:

Route::get('api/lists/{id?}/items', 
[
    'as'    => 'api/lists/items/get', 
    'uses'  => 'ListsController@getListItems'
]);

При описанном выше сценарии, если я пытаюсь посетить api/lists/1/items, отображается страница. С другой стороны, если я пытаюсь посетить api/lists/items, он говорит, что страница не найдена.

Что я в основном хочу, так это если не указан идентификатор списка, Laravel должен получить все элементы идентификатора списка, в противном случае он должен выбирать только элементы определенного идентификатора.

Q: Каким образом возможен необязательный параметр между «словами маршрута»? Это вообще возможно? Или есть альтернативное решение для этого?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Насколько я знаю, невозможно использовать необязательные параметры в середине вашего URL.

Вы можете попробовать обходной путь, разрешив 0 для необязательного параметра и загрузив все элементы в этом случае, как описано здесь .

Тем не менее, я бы рекомендовал использовать здесь два разных маршрута, чтобы соответствовать всем, что вы хотите:

api/lists/items
api/lists/{id?}/items
0 голосов
/ 27 июня 2018

Необходимо указать значение по умолчанию для необязательного параметра в контроллере:

Маршрут

Route::get('api/lists/{id?}/items', 'ListsController@getListItems');

ListsController

public function getListItems($id = null) {
    ---your code----
}

Ссылка

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