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 のインスタンス、 /XXXX/XXXX/XXXX/XXXX/vendor/sylius/cart-bundle/Sylius/Bundle/CartBundle/Provider/CartProvider.php の 103 行目で呼び出され、/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();
これは、CartInterface オブジェクトではなく Order オブジェクトを返します。リポジトリが正しく構成されていないようですが、何か提案はありますか?