【问题标题】:laravel 5.1 error controller Missing argument 1laravel 5.1 错误控制器缺少参数 1
【发布时间】:2016-10-27 09:37:18
【问题描述】:

我的 index.blade.php 中有一个包含我的产品列表的 foreach,它运行良好,现在我正在尝试过滤,我用我的类别和性别完成了我的菜单。

我想展示 category = "t-shirt" 和 gender= "woman" 的产品,但我遇到了这个错误:

StoreController.php 第 36 行中的 ErrorException:缺少参数 1 dixard\Http\Controllers\StoreController::products()

我正在使用此链接

<a href="{{url('shop', ['category'=> 't-shirt', 'gender' => 'woman'])}}" title="">
     <span>Woman</span>
</a>

我的路线

Route::get('shop', 'StoreController@index');
Route::get('shop/{category}/{gender}','StoreController@products');

我的控制器

public function products($category, $gender)
    {


            $gender_id= Gender::where('gender', $gender )->first();
            $category_id= Category::where('name', $category)->first();
            $filter = ['gender_id' => $gender_id->id, 'category_id' => $category_id->id];
            $products = Product::where($filter)->orderBy('id', 'asc')->get();
            $categories = Category::all();
            return view('store.index', compact('products','categories'));   


    }

【问题讨论】:

  • 控制器代码中哪一行是 36?
  • @Yani line 36 --> 公共功能产品($category, $gender)

标签: laravel laravel-5.1 blade


【解决方案1】:

使用路由功能(https://laravel.com/docs/5.1/routing

 <a href="{{route('shop', ['category'=> 't-shirt', 'gender' => 'woman'])}}" title="">
 <span>Woman</span>
 </a>

【讨论】:

  • 如果我使用路由而不是 url,则会出现此错误:“UrlGenerator.php 第 306 行中的 ErrorException:未定义路由 [shop]。(查看:C:\xampp\htdocs\2016\resources\views \layouts\principal.blade.php) (查看: C:\xampp\htdocs\2016\resources\views\layouts\principal.blade.php) "
  • 结果是-->找不到页面
【解决方案2】:

您可以使用命名路线。这没什么特别的。

Route::get('shop/{category}/{gender}', [
  'uses' => StoreController@products', 
  'as' => 'shopRoute'
]);

还有你的网址:

route('shopRoute', ['category'=> 't-shirt', 'gender' => 'woman'])

【讨论】:

  • 我试过了!同样的错误:StoreController.php 第 36 行中的 ErrorException:缺少 dixard\Http\Controllers\StoreController::products() 的参数 1
【解决方案3】:

我是这样解决的:

Route::get('shop','ShopController@index');
Route::get('shop/{categoryA}','ShopController@category'); 
Route::get('shop/{categoryB}/{genderB}','ShopController@categoryGender'); 
Route::get('shop/{categoryC}/{genderC}/{slugC}','ShopController@product');

我不知道为什么,但我改变了传递给我的路线的变量,它起作用了!

【讨论】:

    猜你喜欢
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 2017-07-29
    相关资源
    最近更新 更多