我想按价格订购产品,一个链接从低到高,另一个从高到低, 我得到了这个错误:当我打开'content.products'页面时,“缺少App \ Http \ Controllers \ ShopController :: products()的参数3”。 这是控制器中的功能:
public function products(Request $request,$category_url,$sort){
Product::getProducts($category_url, self:: $data);
if ($category1 = Categorie::where('url', '=', $category_url)->first()) {
$products = Product::where('categorie_id', $category1->getAttribute('id'))->orderBy('price', $sort)->get();
return view('content.products', self::$data , compact('products', 'sort'));
}
}
这是路线:
Route::get('shop/{category_url}/sorting-{sort}','ShopController@products');
这些是视图中的链接,视图是content.products
<a href=" {{ url('shop/'.$category['url'].'/sorting-asc')}}"
style="color:black"> High to low</a> |
<a href=" {{ url('shop/'.$category['url'].'/sorting-desc')}}" style="color:black">Low to high</a>
答案 0 :(得分:0)
如果您将所有内容保留为友好链接,我认为您的链接会更加优雅。因此,如果您想这样做,可以使用
更改路线 Route::get('shop/{category_url}/sorting-{sort}','ShopController@products');
并为您的函数添加参数
public function products($category_url, $sort){
如果您不在其他任何地方使用它,则不需要请求。此外,您还需要删除此行
$sort = $request->get('sort', 'asc');
一切都应该有效。祝好运!抱歉,如果不起作用,现在就无法测试。
答案 1 :(得分:0)
检查此代码中的3个变量,它会为您提供有关您的问题的更多提示。
public function products($category_url, Request $request){
Product::getProducts($category_url, self:: $data);
if ($category1 = Categorie::where('url', '=', $category_url)->first()) {
dd($category1->id); // 1 check this
$sort = $request->get('sort', 'asc');
dd($sort); // 2 check again
// 3 check 'categorie_id' if there is any typo
$products = Product::where('categorie_id', $category1->id)
->orderBy('price', $sort)
->get();
return view('content.products', self::$data , compact('products', 'sort'));
}
}