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

时间:2015-05-05 11:39:38

标签: php laravel laravel-5 laravel-routing laravel-validation

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

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

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

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

'controller_plugins' => array(
    'invokables' => array(
        'HeadTitlePlugin' => 'Modulename\Controller\Plugin\HeadTitlePlugin'
    )
),

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

6 个答案:

答案 0 :(得分:57)

这非常简单,只需使用route()方法即可。假设您的路由参数名为id

public function authorize(){
    $id = $this->route('id');
}

答案 1 :(得分:7)

您可以通过Illuminate \ Http \ Request实例

访问Route参数值
public function destroy($id, DeletePivotRequest $request)
{
    if ($request->route('id'))
    {
        //
    }

    Resource::findOrFail($id);
}

答案 2 :(得分:5)

Laravel 5.2,来自控制器:

use Route;

...

Route::current()->getParameter('id');

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

即。无论getParameter('id')在网址中的位置如何,{id}都会给出正确答案。

请参阅Laravel Docs: Accessing the Current Route

答案 3 :(得分:1)

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

对于下面的情况,应该是:grouped = df.groupby([pd.Grouper(freq='5M'), 'ID']).agg(lambda x: '>'.join(set(x))) 不是 'user'

'id'

enter image description here

答案 4 :(得分:1)

测试其他解决方案后,似乎不适用于laravel 8,但下面的方法有效

Route::getCurrentRoute()->id

假设您的路线是

Route::post('something/{id}', ...)

答案 5 :(得分:0)

我来到这里寻找答案,并在评论中找到了答案,所以想要澄清其他人使用资源路线试图在表单请求中使用它

正如卢卡斯在评论中提到的那样: 给定资源控制器Route::resource('post', ...),您可以使用的参数将命名为post

这对我有用但不太完整。看来该参数将是资源存根的最后一部分的单数形式。

就我而言,路线定义为$router->resource('inventory/manufacturers', 'API\Inventory\ManufacturersController');

可用参数为manufacturer(存根inventory/manufacturers最后一部分的单数版本)