我该如何解决这个错误“函数 App\Http\Controllers\CtnController::show() 的参数太少,通过了 0 并且预期正好是 1”

Posted

技术标签:

【中文标题】我该如何解决这个错误“函数 App\\Http\\Controllers\\CtnController::show() 的参数太少,通过了 0 并且预期正好是 1”【英文标题】:How can i solve this error "Too few arguments to function App\Http\Controllers\CtnController::show(), 0 passed and exactly 1 expected"我该如何解决这个错误“函数 App\Http\Controllers\CtnController::show() 的参数太少,通过了 0 并且预期正好是 1” 【发布时间】:2020-07-22 22:36:31 【问题描述】:

我已经查看了类似的问题,但没有一个解决方案适合我。我已经展示了从我想要显示的数据库中获取数据的视图。我相信我的 CtnController 上的 show 函数有正确的代码,但我不断收到这个令人沮丧的错误。在这种情况下,Ctn 是我正在尝试创建的一种表单。

这是我的控制器。

<?php

namespace App\Http\Controllers;
use App\Ctn;

use Illuminate\Http\Request;
class CtnController extends Controller

           /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    
        $this->middleware('auth');
    
        /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    
        $ctns = Ctn::orderBy('created_at', 'desc')->paginate(5);
        return view('/ctn.index')->with('ctns', $ctns);
    

    public function create()
    return view('/ctn.create'); 
    

    public function store(Request $request)
        $validatedData = $request -> validate([
            'bol' => 'required',
            'carrier' => 'required',
             'address' => 'required',
             'etd' => 'required',
             'eta' => 'required',
             'portload' => 'required',
             'portdischarge' => 'required',

        ]);

        $ctn = new Ctn;
        $ctn->bill_landing = request('bol');
        $ctn->carrier = request('carrier');
        $ctn->address = request('address');
        $ctn->eta = request('eta');
        $ctn->etd = request('etd');
        $ctn->incoterm = request('incoterm');
        $ctn->forwarder = request('forwarder');
        $ctn->ctnref = request('ctnref');
        $ctn->portloading = request('portload');
        $ctn->portdischarge = request('portdischarge');
        $ctn->quantity = request('quantity');
        $ctn->origin_goods = request('origin');
        $ctn->cost_goods = request('cost');
        $ctn->currency = request('currency');
        $ctn->package_type = request('package');

        $ctn->save();
        return redirect('/ctn')->with('success', 'CTN created');
    

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    

        $ctn = Ctn::find($id);
        return view('/ctn.show', compact('ctn'));
    

下面是我在 web.php 文件中的展示路线

Route::get('/ctn/show', 'CtnController@show')->name('show');

显示表单只是一个 html 表单。

【问题讨论】:

请一直向下滚动查看显示功能。 【参考方案1】:

您的show() 方法除了$id,但是,您没有在路由中指定值。更改您的路线定义,以便可以接受id

Route::get('/ctn/show/id', 'CtnController@show')->name('show');

这将假设您使用的网址如下:

http://example.com/ctn/show/1

更多信息可以查看Route Parameters documentation

【讨论】:

我曾尝试在 show route 上添加 id,但随后出现错误 404 not found @ItsCharlie4real 你能举一个你正在使用的网址的例子吗?【参考方案2】:

show 方法的 $id 参数需要路由参数的隐式绑定,但您的路由不知道任何 id 参数,因此它不能绑定到您的方法。

【讨论】:

以上是关于我该如何解决这个错误“函数 App\Http\Controllers\CtnController::show() 的参数太少,通过了 0 并且预期正好是 1”的主要内容,如果未能解决你的问题,请参考以下文章

我该如何解决这个 composer.json 错误

类型错误,我该如何解决这个错误,在图片中我写了我的具体问题

npm 错误!代码 1.为啥这个错误消息会发生 npm ERR!代码1?我该如何解决

我该如何解决这个“Invalid `Podfile`”错误?

maven安装时出现编译错误我该如何解决这个错误[重复]

我该如何解决这个错误? “找不到命令:傀儡”