![](/img/trans.png)
[英]“Submitted form is invalid” when adding a product to cart : Sylius Cart Bundle
[英]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.