Php 如何在Laravel 5表单请求中使用请求路由参数?
我是Laravel 5的新手,我正在尝试使用新的表单请求来验证我的应用程序中的所有表单 现在我陷入了一个需要删除资源的困境,我创建了一个deleteSourceRequest,只是为了使用authorize方法 问题是,我需要在route参数中找到所请求的id,但我看不到如何将其放入authorize方法中 我可以在控制器方法中使用id,如下所示:Php 如何在Laravel 5表单请求中使用请求路由参数?,php,laravel,laravel-5,laravel-routing,laravel-validation,Php,Laravel,Laravel 5,Laravel Routing,Laravel Validation,我是Laravel 5的新手,我正在尝试使用新的表单请求来验证我的应用程序中的所有表单 现在我陷入了一个需要删除资源的困境,我创建了一个deleteSourceRequest,只是为了使用authorize方法 问题是,我需要在route参数中找到所请求的id,但我看不到如何将其放入authorize方法中 我可以在控制器方法中使用id,如下所示: public function destroy($id, DeletePivotRequest $request) { Resource::
public function destroy($id, DeletePivotRequest $request)
{
Resource::findOrFail($id);
}
但是如何在表单请求的authorize方法中实现这一点呢?这非常简单,只需使用
route()
方法即可。假设您的路由参数被称为id
:
public function authorize(){
$id = $this->route('id');
}
您可以通过Illumb\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参数的路由,并且可能所有参数并不总是存在,或者可能以不同的顺序出现,则此方法非常有用
i、 e.getParameter('id')
将为您提供正确答案,而不管{id}
在URL中的位置如何
请参见我来这里是为了寻找答案,并在评论中找到了答案,因此我想为其他使用资源路由的人澄清一下,他们试图在表单请求中使用这个答案 卢卡斯在评论中提到: 给定资源控制器
Route::resource('post',…)
可以使用的参数将命名为post
这对我是有用的,但并不完全。似乎该参数将是资源存根最后一部分的单一版本
在我的例子中,路由被定义为$router->resource('inventory/manufacturers','API\inventory\ManufacturersController')代码>
可用参数为制造商
(存根最后一部分的单数版本库存/制造商
),具体取决于您在路线中定义参数的方式
对于我下面的例子,它应该是:'user'
而不是
$id=$this->route('user')代码>
感谢您的快速回复。我做了dd($this->route('id'));在authorize方法中。它正在返回空值:(如果您使用的是资源路由,那么参数的名称应该是资源的名称。例如,post
如果您得到了Route::resource('post'),…)
是的,我最终通过转储路由对象本身解决了这个问题。非常感谢。:$this->Route('foo)
在Laravel 5.2控制器上对我不起作用(“计算代码时出错”)。然而Route::current()->getParameter('foo')
确实(请参见我的答案。)发生了更改,或者我需要先加载其他内容吗?@WilliamTurrell这个问题是关于在表单请求方法中获取路由参数的(authorize
)route
方法在请求对象上仍然存在,但在控制器上从未存在过。在使用route模型时也存在同样的问题binding@Emmanuel试试这个