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

Roh*_*han 33 php laravel laravel-routing laravel-5 laravel-validation

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

现在我陷入了需要删除资源的地步,我创建了一个DeleteResourceRequest,只是为了使用authorize方法.

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

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

public function destroy($id, DeletePivotRequest $request)
{
    Resource::findOrFail($id);
}
Run Code Online (Sandbox Code Playgroud)

但是如何在Form Request的授权方法中使用它呢?

luk*_*ter 63

这很简单,只需使用该route()方法即可.假设您的路由参数被调用id:

public function authorize(){
    $id = $this->route('id');
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您正在使用资源路由,则参数的名称应该是资源的名称.例如`post`如果你有`Route :: resource('post',...)` (5认同)

小智 8

取决于您在路由中定义参数的方式。

对于我下面的情况,它将是:'user' 'id'

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

在此处输入图片说明


Eme*_*bah 7

您可以通过Illuminate\Http\Request实例访问Route参数值

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

    Resource::findOrFail($id);
}
Run Code Online (Sandbox Code Playgroud)


Wil*_*ell 5

Laravel 5.2,来自控制器:

use Route;

...

Route::current()->getParameter('id');
Run Code Online (Sandbox Code Playgroud)

如果你想对多个URL参数的多个路由使用相同的控制器方法,我发现这很有用,并且所有参数可能并不总是存在或者可能以不同的顺序出现......

也就是说getParameter('id'),无论{id}URL中的位置如何,都会给出正确的答案.

请参阅Laravel Docs:访问当前路线