繁体   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