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

0vvn1miw  于 2023-11-20  发布在  其他
关注(0)|答案(9)|浏览(150)

我是Laravel 5的新手,我正在尝试使用新的表单请求来验证应用程序中的所有表单。
现在我被困在一个需要对资源进行加密的地方,我创建了一个DeleteResourceRequest,只是为了使用authorize方法。
问题是,我需要在route参数中找到请求的id,但我不知道如何将其导入authorize方法。
我可以在控制器方法中使用id,如下所示:

public function destroy($id, DeletePivotRequest $request)
{
    Resource::findOrFail($id);
}

字符串
但是如何让它在表单请求的授权方法中工作呢?

pbpqsu0x

pbpqsu0x1#

这很简单,只需使用route()方法。假设您的路由参数称为id

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

字符串

e5nqia27

e5nqia272#

您可以通过Illuminate\Http\Request示例访问Route参数Value

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

    Resource::findOrFail($id);
}

字符串

yvt65v4c

yvt65v4c3#

这取决于在路由中定义参数的方式。
对于我下面的例子,它将是:'user'不是'id'
$id = $this->route('user');


的数据

wvyml7n5

wvyml7n54#

Laravel 5.2,在控制器中:

use Route;

...

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

字符串
我发现这很有用,如果你想使用同一个控制器方法为多个路由多个URL参数,也许所有参数并不总是存在或可能出现在不同的顺序.
getParameter('id')将给予您正确的答案,而不管{id}在URL中的位置。
See Laravel #:找到当前路径

dwbf0jvd

dwbf0jvd5#

在测试了其他解决方案后,似乎不适用于laravel 8,但下面的工作

Route::getCurrentRoute()->id

字符串
假设你的路线是

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

kxe2p93d

kxe2p93d6#

我来到这里寻找一个答案,并在评论中找到了它,所以想为其他人澄清使用资源路由试图在表单请求中使用此
正如lukas在他的评论中提到的:给定一个资源控制器Route::resource('post', ...),您可以使用的参数将命名为post
这对我来说很有用,但并不完全。看起来参数将是资源存根最后一部分的单数版本。
在本例中,路由定义为$router->resource('inventory/manufacturers', 'API\Inventory\ManufacturersController');
可用的参数是manufacturer(存根inventory/manufacturers最后一部分的单数版本)

xfb7svmp

xfb7svmp7#

如果你调用,你将得到参数id

request()->route('id')

字符串

$this->route('id')


如果使用资源路由,则需要使用资源名称调用

// eg: resource
Route::resource('users', App\Http\Controllers\UserController::class);

$this->route('user')

hec6srdp

hec6srdp8#

在终端写入中
php artisan route:list
看看你的参数名是什么x1c 0d1x
然后使用
$this->route('sphere')获取参数

vaqhlq81

vaqhlq819#

如果您路由是资源路由,则按照以下方式编码

// for example your route is
Route::resource('posts', 'PostsController');

// then

public function authorize(){
    $id = request()->post;
}

字符串

相关问题