2014-06-30 16 views
1

我正在使用Sylius提供的一些捆綁建設一家商店。我已經安裝了ResourceBundle,ProductBundle,OrderBundle和CartBundle。添加到購物車Sylius error時出錯

我有打電話的產品頁面上的「sylius_cart_item_add」路徑時麻煩:

ContextErrorException: Catchable Fatal Error: Argument 1 passed to Sylius\Bundle\CartBundle\Event\CartEvent::__construct() must be an instance of Sylius\Bundle\CartBundle\Model\CartInterface, instance of XXXX\OrderBundle\Entity\Order given, called in /XXXX/XXXX/XXXX/XXXX/vendor/sylius/cart-bundle/Sylius/Bundle/CartBundle/Provider/CartProvider.php on line 103 and defined in /XXXX/XXXX/XXXX/XXXX/vendor/sylius/cart-bundle/Sylius/Bundle/CartBundle/Event/CartEvent.php line 42

我已經安裝了CartBundle以下the documentation(我還沒有創建一個CartItem實體,如根據可選導遊)。這是Sylius束我的配置文件(XXXX代表我的公司名稱):

sylius_resource: 
    resources: 
     dinamic.product: 
      driver: doctrine/orm 
      classes: 
       model: XXXX\ProductBundle\Entity\Product 
       interface: Sylius\Bundle\ProductBundle\Model\ProductInterface 
       controller: Sylius\Bundle\ResourceBundle\Controller\ResourceController 
       repository: Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository 

sylius_product: 
    driver: doctrine/orm 
    classes: 
     product: 
      model: XXXX\ProductBundle\Entity\Product 
      controller: Sylius\Bundle\ProductBundle\Controller\ProductController 
      repository: XXXX\ProductBundle\Repository\ProductRepository 
      form: Sylius\Bundle\ProductBundle\Form\Type\ProductType 

sylius_order: 
    driver: doctrine/orm 
    classes: 
     order: 
      model: XXXX\OrderBundle\Entity\Order 
     order_item: 
      model: XXXX\OrderBundle\Entity\OrderItem 

sylius_money: 
    driver: doctrine/orm 

sylius_cart: 
    resolver: XXXX.cart_item_resolver 
    classes: ~ 

stof_doctrine_extensions: 
    orm: 
     default: 
      sluggable: true 
      timestampable: true 

我會很高興地感謝所有幫助,在此先感謝。

編輯:尋找在Sylius'代碼,這個問題似乎是在CartBundle /提供者/ CartProvider/getCart()函數(線101):

$this->cart = $this->repository->createNew(); 

這將返回一個Order對象而非CartInterface一個的,似乎該存儲庫配置不正確,有什麼建議?

回答

0

我可以通過讓我的Order實體實現CartInterface來解決問題,我還修改了我的OrderItem實體以實現CartItemInterface。

最後,這是我的config.yml文件

sylius_resource: 
    resources: 
     dinamic.product: 
      driver: doctrine/orm 
      classes: 
       model: XXXX\ProductBundle\Entity\Product 
       interface: Sylius\Bundle\ProductBundle\Model\ProductInterface 
       controller: Sylius\Bundle\ResourceBundle\Controller\ResourceController 
       repository: Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository 
     dinamic.cart: 
      driver: doctrine/orm 
      classes: 
       model: XXXX\OrderBundle\Entity\Cart 
       interface: Sylius\Bundle\CartBundle\Model\CartInterface 
       controller: Sylius\Bundle\ResourceBundle\Controller\ResourceController 
       repository: Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository 

sylius_product: 
    driver: doctrine/orm 
    classes: 
     product: 
      model: XXXX\ProductBundle\Entity\Product 
      controller: Sylius\Bundle\ProductBundle\Controller\ProductController 
      repository: XXXX\ProductBundle\Repository\ProductRepository 
      form: Sylius\Bundle\ProductBundle\Form\Type\ProductType 

sylius_order: 
    driver: doctrine/orm 
    classes: 
     order: 
      model: XXXX\OrderBundle\Entity\Order 
     order_item: 
      model: Dinamic\OrderBundle\Entity\OrderItem 

sylius_money: 
    driver: doctrine/orm 

sylius_cart: 
    resolver: dinamic.cart_item_resolver 
    classes: ~ 

此外,這是我的路由條目與呼叫控制器:

XXXX_cart_item_add: 
    pattern: /agregar 
    defaults: { _controller: sylius.controller.cart_item:addAction } 

我還是想知道爲什麼資源包庫不使用購物車而不是訂單

0

看起來你好像缺少了use Sylius\Bundle\CartBundle\Model\CartInterface

+0

該文件就位,使用CartItemInterface – Joel

+0

@Joel請注意發生錯誤的文件的內容。 – umpirsky

+0

@umpirsky我不知道哪個文件包含錯誤。我認爲這發生在SyliusCartBundle內部,但我不能確定這個錯誤。 – Joel

相關問題