php - Laravel 8 上的 ArgumentCountError
问题描述
我正在使用 laravel 8,当我写这样的路线时:
网页.php
Route::match(['get', 'post'], '/', [PageController::class, 'index']);
Route::match(['get', 'post'], '/tshirt', [PageController::class, 'productCategory']);
Route::match(['get', 'post'], '/electronic', [PageController::class, 'productCategory']);
Route::match(['get', 'post'], '/tshirt/{slug}', [PageController::class, 'detail']);
Route::match(['get', 'post'], '/electronic/{slug}', [PageController::class, 'detail']);
和这样的控制器:
页面控制器.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PageController extends Controller
{
public function index()
{
$data = [
'title' => 'Dashboard',
];
return view('pages.index', $data);
}
public function productCategory($category)
{
# code...
}
public function detail($category, $detail)
{
# code...
}
}
我想要的是,如果当用户位于 url '/tshirt' 或 '/electronic' 时,thshirt 或电子将包含在 PageController::productCategory 的 $category 参数中
类似地,当用户输入 '/tshirt/nameoftshirt' 时,PageController::detail 控制器将使用 'tshirt' 填充 $category 参数,并使用 'nameoftshirt' 填充 $slug
它显示了这个错误:
ArgumentCountError
Too few arguments to function App\Http\Controllers\PageController::productCategory(), 0 passed in D:\Programing\Web\laraApp\vendor\laravel\framework\src\Illuminate\Routing\Controller.php on line 54 and exactly 1 expected
如何获取将主要参数传递给控制器的路由?
解决方案
您必须使主要类别动态化,然后您可以像现在尝试的那样在控制器中捕获它。这样您就不必为每个类别制作路线。
Route::match(['get', 'post'], '/{category}', [PageController::class, 'productCategory']);
Route::match(['get', 'post'], '/{category}/{slug}', [PageController::class, 'detail']);
然后在控制器中
public function productCategory($category)
{
dd($categoty); // prints tshirt when you hit the url /tshirt
}
public function detail($category, $detail)
{
dd($categoty, $detail); // prints tshirt and nameoftshirt when you hit the url /tshirt/nameoftshirt
}
推荐阅读
- python - NameError:名称“di”未在对象中定义
- java - Spring security 5/spring boot 2.2: No AuthenticationProvider found for org.springframework.security.authentication.UsernamePasswordAuthenticationToken
- php - array_rand() 执行所有元素 sql 语句 php
- azure-ad-graph-api - 获取 https://graph.microsoft.com/v1.0/groups
- html - Shiny bsPopover中单个文本元素的字体颜色
- python - 从具有重复行的两个列表创建列 - Pandas
- angular - 将 ngx-charts 作为单独组件导入 Angular 时出错:错误 NG8001:'ngx-charts-tree-map' 不是已知元素
- python - 无需重复代码即可添加到众多列表 Python
- reactjs - 'ChangeEvent<{}>' 类型的参数不可分配 - 与 TypeScript 反应
- python - 如何正确指定pyinstaller资源文件?