gpt4 book ai didi

php - Laravel 资源路由被分配了错误的参数名称

转载 作者:行者123 更新时间:2023-12-02 01:01:56 27 4
gpt4 key购买 nike

使用 Laravel 5.6,我使用以下命令生成资源 Controller :

php artisan make:controller SkusController --resource --model=Sku

生成的 Controller 文件具有正确的类型提示方法。例如:
<?php

namespace App\Http\Controllers;

use App\Sku;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class SkusController extends Controller
{
/**
* Display the specified resource.
*
* @param \App\Sku $sku
* @return \Illuminate\Http\Response
*/
public function show(Sku $sku)
{
//
}
}

现在,我将资源路由添加到我的路由文件中,如下所示:
Route::resource('skus', 'SkusController');

但是,在我的路由列表中,这些路由中的命名参数显示为 skus ,而不是 sku ,导致路由模型绑定(bind)不起作用。 $sku Controller 方法中的变量结果为空。

例如,这里是 show 的 URI。 php artisan route:list 中的方法条目输出:
skus/{skus}

或者,我对 products 遵循相同的过程。资源,并且 URI 是正确的:
products/{product}

在这种情况下,路由模型绑定(bind)按预期工作,因为 Controller 变量被称为 $product。 .

我觉得可以 manually change the parameter name ,但我只是想知道为什么这应该是必要的。不应该首先正确生成路线吗?

最佳答案

你可以像这样使用它:

Route::resource('skus', 'SkusController')->parameters(['skus' => 'sku']);

它可以用于路由模型绑定(bind)。像
public function update(Request $request, Sku $sku)
{
$sku->update(); // data to be updated
}

其中 Sku 将是您的模型名称。

关于php - Laravel 资源路由被分配了错误的参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49990814/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com