我正在尝试在我的Laravel 4应用中使用Moltin Cart:
现在我只想登录用户访问购物车,所以我添加了
$this->beforeFilter('auth', array('only' => 'postAddToCart', 'getCart', 'getRemoveItem'));
在我的storeController中。
但是当我尝试访问
时出现此错误Declaration of Moltin\Cart\Storage\LaravelSession::insertUpdate() must be compatible with Moltin\Cart\StorageInterface::insertUpdate(Moltin\Cart\Item\Line $item)
我的商店控制器是:
<?php
class StoresController extends \BaseController {
public function __construct()
{
parent::__construct();
$this->beforeFilter('csrf', array('on' => 'post'));
$this->beforeFilter('auth', array('only' => 'postAddToCart', 'getCart', 'getRemoveItem'));
}
public function getIndex()
{
return View::make('stores.index')
->with('products', Product::take(4)->orderBy('created_at', 'DESC')->get());
}
public function getView($id)
{
return View::make('stores.view')
->with('product', Product::find($id));
}
public function getCategory($category_id)
{
return View::make('stores.category')
->with('products', Product::where('category_id', '=', $category_id)->paginate(6))
->with('category', Category::find($category_id));
}
public function getSearch()
{
$keyword = Input::get('keyword');
return View::make('stores.search')
->with('products', Product::where('title', 'LIKE', '%'. $keyword . '%')->get())
->with('keyword', $keyword);
}
public function postAddToCart()
{
$product = Product::find(Input::get('id'));
$qunatity = Input::get('qunatity');
Cart::insert(array(
'id' => $product->id,
'name' => $product->name,
'price' => $product->price,
'qunatity' => $qunatity,
'image' => $product->image
));
return Redirect::to('store/cart');
}
public function getCart()
{
return View::make('stores.cart')->with('products', Cart::contents());
}
public function getRemoveItem($identifier)
{
$product = Cart::item($identifier);
$product->remove();
return Redirect::to('store/cart');
}
}
答案 0 :(得分:0)
假设 moltin / cart 和 moltin / laravel-cart 存储库同步,恢复安装。
如错误消息所示:
Moltin\Cart\StorageInterface::insertUpdate(Moltin\Cart\Item\Line $item)
Moltin\Cart\Storage\LaravelSession::insertUpdate()
没有相同的签名。
他们应该同步!该问题与您的StoresController
无关。
我查了一下:
我发现签名在我回答帖子的时候没问题。
namespace Moltin\Cart;
interface StorageInterface
{
/**
* Add or update an item in the cart
*
* @param Item $item The item to insert or update
* @return void
*/
public function insertUpdate(Item $item); // <<<< This is it!
...
}
namespace Moltin\Cart\Storage;
use Moltin\Cart\Item;
...
class LaravelSession implements \Moltin\Cart\StorageInterface
{
...
/**
* Add or update an item in the cart
*
* @param Item $item The item to insert or update
* @return void
*/
public function insertUpdate(Item $item) // <<<< This is it!
{
...
}
...
}
我的猜测是,当存储库(知道 moltin / cart 是 moltin / laravel-cart 的依赖关系)与某些存储库不同步时,您进行了安装原因。