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
我该怎样称呼它?
答案 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);
即可 方法