按价格订购产品

时间:2017-07-17 18:13:52

标签: php laravel laravel-5 laravel-5.2 laravel-5.3

我想按价格订购产品,一个链接从低到高,另一个从高到低, 我得到了这个错误:当我打开'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>

2 个答案:

答案 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')); 
    }
}