Изменить параметр маршрута Laravel

1

На платформе, которую я разрабатываю, можно запросить данные компании пользователя, отправив запрос GET на конечную точку API api/company/{id}.

По умолчанию параметр id является целым числом, но обычно также можно установить его как строку: api/company/mine будет извлекать данные компании, прошедшие аутентификацию.

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

Вот мое текущее решение:

$request->merge([
    'id' => $request->user()->company
]);

Это работает путем добавления идентификатора к вводу запроса, чтобы к нему можно было получить доступ позже, используя $request->input('id'); , но проблема в том, что если я попытаюсь получить доступ к $request->route('id') я все равно получаю старое значение.

Можно ли напрямую изменить параметр маршрута?

PS

Другое решение, которое приходит мне в голову, - это фактически программно создать новый запрос с новым параметром, а затем передать эту функцию next() в промежуточном программном обеспечении.

Теги:
laravel-5

2 ответа

0
Лучший ответ

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

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

Другое возможное решение - перенаправить запрос в нужную конечную точку API или обработать его в контроллере.

1

Ударьте аналогичную проблему, и с некоторыми копаниями через форумы laracasts кто-то отметил альтернативу, которую я успешно использовал:

$request->route()->setParameter('id',  $request->user()->company);

Ссылка (последнее сообщение): https://laracasts.com/discuss/channels/laravel/change-laravel-route-parameter

Ещё вопросы

Сообщество Overcoder
Наверх
Меню