Как использовать параметр маршрута запроса в форме запроса 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');