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

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

теперь я застрял в точке, где мне нужно удалить ресурс, и я создал DeleteResourceRequest только для использования метода авторизации.

проблема в том, что мне нужно найти, какой id запрашивается в параметре route, но я не вижу, как получить это в методе authorize.

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

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

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

5 ответов


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

public function authorize(){
    $id = $this->route('id');
}

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

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

    Resource::findOrFail($id);
}

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

use Route;

...

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

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

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

посмотреть Laravel Docs: доступ к текущему маршруту


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

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

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

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

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


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

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

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

enter image description here