簡體   English   中英

添加到購物車時Sylius錯誤

[英]Sylius error when adding to cart

我正在使用Sylius提供的一些捆綁包來建立商店。 到目前為止,我已經安裝了ResourceBundle,ProductBundle,OrderBundle和CartBundle。

在產品頁面上調用“ sylius_cart_item_add”路徑時遇到麻煩:

ContextErrorException:可捕獲的致命錯誤:傳遞給Sylius \\ Bundle \\ CartBundle \\ Event \\ CartEvent :: __ construct()的參數1必須是Sylius \\ Bundle \\ CartBundle \\ Model \\ CartInterface的實例,給定的XXXX \\ OrderBundle \\ Entity \\ Order實例,在第103行的/XXXX/XXXX/XXXX/XXXX/vendor/sylius/cart-bundle/Sylius/Bundle/CartBundle/Provider/CartProvider.php中調用,並在/ XXXX / XXXX / XXXX / XXXX / vendor / sylius / cart中定義-bundle / Sylius / Bundle / CartBundle / Event / CartEvent.php第42行

我已經按照文檔安裝了CartBundle(我尚未創建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 / Provider / CartProvider / getCart()函數(第101行)中:

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

這將返回一個Order對象,而不是CartInterface對象,似乎存儲庫配置不正確,有什么建議嗎?

似乎您缺少use Sylius\\Bundle\\CartBundle\\Model\\CartInterface

我可以通過使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 }

我仍然想知道為什么ResourceBundle存儲庫不使用Cart而不是Order

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM