laravel 5来自控制器的调用方法

时间:2017-02-21 18:17:49

标签: laravel methods view controller call

public function edit($id)
{
    $product = Product::find($id);
    \Gloudemans\Shoppingcart\Facades\Cart::add($id, $product->name, 1, $product->price);
}

当我从我的观点中调用它时

<a href="{{\App\Http\Controllers\CartController::edit($productItem->id)}} " class="item_add">

我得到错误:

Non-static method App\Http\Controllers\CartController::edit() should not be called statically 

我该怎样称呼它?

2 个答案:

答案 0 :(得分:0)

您可以使用action辅助方法生成控制器操作的URL:

<a href="{{ action('CartController@edit', [$productItem->id]) }}" class="item_add">

答案 1 :(得分:0)

什么......大声笑...创建一条单独的路线......你尝试这样做的每一种方式应该是非常不赞成和中止(包括一些建议的答案/评论),IMO

注意,我也改变了#34;编辑&#34;根据您正在使用的购物车库的命名惯例添加&#34;添加&#34;

在routes.php中添加(注意我命名了路线 - 最佳做法):

Route::get('cart/add/{id}', ['as' => 'cart.add', 'uses' => 'CartController@add']);

在视图中,将其称为:

<a href="{{ route('cart.add', [$productItem]) }}">Add</a>

在你的控制器中,按照这些方针做点什么:

public function add($id)
{
    $product = Product::find($id);
    Cart::add($id, $product->name, 1, $product->price);

    return redirect()->back();
}
  

PS: 对于为什么要这样调用外观感到困惑。在别名下的config/app.php下,添加:'Cart' => Gloudemans\Shoppingcart\Facades\Cart::class,

     

然后在你的控制器中,在顶部注入use Cart;。从那里,   只需使用Cart::add($id, $product->name, 1, $product->price);即可   方法