0

symfony 2 アプリケーションに sylius cart-bundle をインストールしました。

カートに製品を入れようとすると、次の例外があります。

FatalErrorException: コンパイル エラー: Lyckee\StoreBundle\Cart\ItemResolver::resolve() の宣言は Sylius\Bundle\CartBundle\Resolver\ItemResolverInterface::resolve(Sylius\Bundle\CartBundle\Model\CartItemInterface $item, $data と互換性がある必要があります) /Applications/MAMP/htdocs/Symfony/src/Lyckee/StoreBundle/Cart/ItemResolver.php 13行目

ここで私と同じ問題を抱えている人を見つけました: Sylius CartBundle Symfony2

彼は service.yml ファイルの問題で解決しましたが、私にはうまくいきませんでした。

私の CartItem クラス:

namespace Lyckee\StoreBundle\Entity;

use Sylius\Bundle\CartBundle\Model\CartItem as BaseCartItem;
use Doctrine\ORM\Mapping as ORM;
/**
 * @ORM\Table()
 * @ORM\Entity
 * @ORM\Table(name="lyckee_cart_item_1")
 */
class CartItem extends BaseCartItem
{
    /**
     *@ORM\ManyToOne(targetEntity="Lyckee\StoreBundle\Entity\Product")
     * @ORM\JoinColumn(nullable=false))
     */
    private $product;

    /**
     * Get product
     *
     * @return \Lyckee\StoreBundle\Entity\Product
     */
    public function getProduct()
    {
        return $this->product;
    }
    /**
     * Set product
     *
     * @param \Lyckee\StoreBundle\Entity\Product $product
     * @return CartItem
     */

    public function setProduct(\Lyckee\StoreBundle\Entity\Product $product)
    {
        $this->product = $product;
    }}

マイアイテムリゾルバー

namespace Lyckee\StoreBundle\Cart;

use Sylius\Bundle\CartBundle\Model\CartItemInterface;
use Sylius\Bundle\CartBundle\Resolver\ItemResolverInterface;
use Sylius\Bundle\CartBundle\Resolver\ItemResolvingException;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\EntityManager;

class ItemResolver implements ItemResolverInterface
{
    private $entityManager;

    public function __construct(EntityManager $entityManager)
    {
        $this->entityManager = $entityManager;
    }

    public function resolve(CartItemInterface $item, Request $request)
    {
        //$productId = $request->query->get('productId');

        // If no product id given, or product not found, we throw exception with nice message.
        if (!$productId || !$product = $this->getProductRepository()->find($productId)) {
            throw new ItemResolvingException('Requested product was not found');
        }

        // Assign the product to the item and define the unit price.
        $item->setProduct($product);
        $item->setUnitPrice($product->getPrix());

        // Everything went fine, return the item.
        return $item;
    }

    private function getProductRepository()
    {
        return $this->entityManager->getRepository('LyckeeStoreBundle:Product');
    }
}
4

2 に答える 2

0

ドキュメントを更新する必要があります。「Request」を削除するだけです。

public function resolve(CartItemInterface $item, $request)
于 2014-06-06T18:41:09.430 に答える
0

resolve メソッドを呼び出したときにこのエラーが発生しました

 public function resolve(CartItemInterface $item, Request $request)

$itemその時点で、 CartItem クラスのインスタンスでなければならない最初のパラメーターを渡す必要があります。

カート プロバイダーとリゾルバーの詳細については、ドキュメントをご覧ください。

http://sylius.readthedocs.org/en/latest/bundles/SyliusCartBundle/services.html

于 2014-06-06T10:24:33.670 に答える