我该如何解决这个错误“函数 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”的主要内容,如果未能解决你的问题,请参考以下文章
npm 错误!代码 1.为啥这个错误消息会发生 npm ERR!代码1?我该如何解决