Php 如何在Laravel 5表单请求中使用请求路由参数?

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::

我是Laravel 5的新手,我正在尝试使用新的表单请求来验证我的应用程序中的所有表单

现在我陷入了一个需要删除资源的困境,我创建了一个deleteSourceRequest,只是为了使用authorize方法

问题是,我需要在route参数中找到所请求的id,但我看不到如何将其放入authorize方法中

我可以在控制器方法中使用id,如下所示:

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试试这个