PHP code example of thenbsp / cart-bundle

1. Go to this page and download the library: Download thenbsp/cart-bundle library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

thenbsp / cart-bundle example snippets


// app/AppKernel.php

public function registerBundles()
{
    return array(
        // ...
        new Thenbsp\CartBundle\ThenbspCartBundle()
        // ...
    );
}

// src/AppBundle/Entity/Product.php

use Doctrine\ORM\Mapping AS ORM;
use Thenbsp\CartBudnle\Core\EntityInterface;

/**
 * @ORM\Entity
 * @ORM\Table(name="products")
 */
class Product implements EntityInterface
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type="decimal", precision=10, scale=2)
     */
    protected $price;

    /**
     * @ORM\Column(type="text")
     */
    protected $description;

    /**
     * 返回商品唯一标识
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * 返回商品单价
     */
    public function getPrice()
    {
        return $this->price;
    }

    // ...
}

$cart = $this->get('thenbsp_cart');

// src/EventListener/CartListener.php

use Thenbsp\CartBundle\Event\Events;
use Thenbsp\CartBundle\Event\ItemEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class CartListener implements EventSubscriberInterface
{
    public static function getSubscribedEvents()
    {
        return array(
            Events::ADD_BEFORE => 'onCartAddBefore'
        );
    }
    public function onCartAddBefore(ItemEvent $event)
    {
        // 被添加到购物车的商品对象
        $entity = $event->getEntity();

        // 商品的数量
        $quantity = $event->getQuantity();

        // 如果商品状态为 “已禁用”,则不添加到购物车
        if( $entity->getStatus() === 'disabled' ) {
            $event->stopPropagation();
        }
    }
}