使用laravel moltin购物车时,LaravelSession :: insertUpdate()会出现问题

时间:2014-07-02 02:31:53

标签: php laravel laravel-4

我正在尝试在我的Laravel 4应用中使用Moltin Cart

  • 我通过作曲家安装了Moltin Cart,
  • 然后添加了服务提供商('Moltin \ Cart \ CartServiceProvider')
  • 并添加了别名('Cart'=>'Moltin \ Cart \ Facade')。

现在我只想登录用户访问购物车,所以我添加了

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

1 个答案:

答案 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 的依赖关系)与某些存储库不同步时,您进行了安装原因。