Как использовать параметр маршрута запроса в запросе формы Laravel 5?
Я новичок в Laravel 5 и пытаюсь использовать запрос новой формы для проверки всех форм в моем приложении.
Теперь я застрял в точке, где мне нужно УДАЛИТЬ ресурс, и я создал запрос DeleteResourceRequest только для того, чтобы использовать метод авторизации.
Проблема в том, что мне нужно найти, какой идентификатор запрашивается в параметре маршрута, но я не вижу, как его ввести в метод авторизации.
Я могу использовать идентификатор в методе контроллера, например итак:
public function destroy($id, DeletePivotRequest $request)
{
Resource::findOrFail($id);
}
Но как заставить это работать в методе авторизации запроса формы?
5 answers
Это очень просто, просто используйте метод route()
. Предполагая, что ваш параметр маршрута называется id
:
public function authorize(){
$id = $this->route('id');
}
Вы можете получить доступ к значению параметра маршрута через экземпляр Illuminate\Http\Request
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}
в URL.
Я пришел сюда в поисках ответа и вроде как нашел его в комментариях, поэтому хотел уточнить для других, использующих маршрут ресурсов, пытаясь использовать это в запросе формы
Как упоминал Лукас в своем комментарии:
Учитывая контроллер ресурсов Route::resource('post', ...)
, параметр, который вы можете использовать, будет назван post
Это было полезно для меня, но не совсем полно. Похоже, что параметр будет единственной версией последней части заглушки ресурса.
В моем случае маршрут был определяется как $router->resource('inventory/manufacturers', 'API\Inventory\ManufacturersController');
И доступным параметром был manufacturer
(сингулярная версия последней части заглушки inventory/manufacturers
)