使用 laravel moltin 购物车时的 LaravelSession::insertUpdate() 问题

Posted

技术标签:

【中文标题】使用 laravel moltin 购物车时的 LaravelSession::insertUpdate() 问题【英文标题】:LaravelSession::insertUpdate() issues while using laravel moltin shopping cart 【发布时间】:2014-08-22 16:56:33 【问题描述】:

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

我通过 composer 安装了 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】:

简短的回答:

假设 moltin/cartmoltin/laravel-cart 存储库已同步,继续安装。

长答案:

如错误消息所述:

Moltin\Cart\StorageInterface::insertUpdate(Moltin\Cart\Item\Line $item) Moltin\Cart\Storage\LaravelSession::insertUpdate()

没有相同的签名。

它们应该是同步的!该问题与您的StoresController 完全无关。

我检查过:

https://github.com/moltin/cart/blob/master/src/Moltin/Cart/StorageInterface.php 和 https://github.com/moltin/laravel-cart/blob/master/src/Moltin/Cart/Storage/LaravelSession.php

我发现签名可以作为我发帖的时间。


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/cartmoltin/laravel-cart 的依赖项)对于某些人不同步时,您进行了安装原因。

【讨论】:

以上是关于使用 laravel moltin 购物车时的 LaravelSession::insertUpdate() 问题的主要内容,如果未能解决你的问题,请参考以下文章

Moltin iOS V2 - 加载图像很痛苦

json Moltin OpenAPI

Laravel Livewire,两个 livewire 组件之间的通信

我已经做了一个自动加载转储来重建我的类图

需要使用 Laravel 将购物车详细信息插入 Mysql 数据库

在 laravel 的 AppServiceProvider 中使用身份验证