![](/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.