Как использовать параметр маршрута запроса в запросе формы Laravel 5?


Я новичок в Laravel 5 и пытаюсь использовать запрос новой формы для проверки всех форм в моем приложении.

Теперь я застрял в точке, где мне нужно УДАЛИТЬ ресурс, и я создал запрос DeleteResourceRequest только для того, чтобы использовать метод авторизации.

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

Я могу использовать идентификатор в методе контроллера, например итак:

public function destroy($id, DeletePivotRequest $request)
{
    Resource::findOrFail($id);
}

Но как заставить это работать в методе авторизации запроса формы?

Author: Rohan, 2015-05-05

5 answers

Это очень просто, просто используйте метод route(). Предполагая, что ваш параметр маршрута называется id:

public function authorize(){
    $id = $this->route('id');
}
 49
Author: lukasgeiter, 2015-05-05 11:43:30

Вы можете получить доступ к значению параметра маршрута через экземпляр Illuminate\Http\Request

public function destroy($id, DeletePivotRequest $request)
{
    if ($request->route('id'))
    {
        //
    }

    Resource::findOrFail($id);
}
 5
Author: Digitlimit, 2015-05-05 11:53:19

Laravel 5.2, изнутри контроллера:

use Route;

...

Route::current()->getParameter('id');

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

Т.е. getParameter('id') даст вам правильный ответ, независимо от позиции {id} в URL.

См. Документы Laravel: Доступ к текущему маршруту

 5
Author: William Turrell, 2016-08-05 18:31:14

Я пришел сюда в поисках ответа и вроде как нашел его в комментариях, поэтому хотел уточнить для других, использующих маршрут ресурсов, пытаясь использовать это в запросе формы

Как упоминал Лукас в своем комментарии: Учитывая контроллер ресурсов Route::resource('post', ...), параметр, который вы можете использовать, будет назван post

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

В моем случае маршрут был определяется как $router->resource('inventory/manufacturers', 'API\Inventory\ManufacturersController');

И доступным параметром был manufacturer (сингулярная версия последней части заглушки inventory/manufacturers)

 0
Author: Bryan, 2018-03-04 01:36:24

В зависимости от того, как вы определили параметр в своих маршрутах.

Для моего случая ниже это было бы: 'user' нет 'id'

$id = $this->route('user');

enter image description here

 0
Author: Emmanuel Opio, 2018-07-15 15:00:40