thenbsp / cart-bundle
Shopping Cart Bundle for Symfony2
v1.0.0
2015-11-27 09:26 UTC
Requires
- php: >=5.3.9
- symfony/framework-bundle: ~2.3|~3.0
This package is not auto-updated.
Last update: 2024-11-09 18:43:36 UTC
README
安装
composer require thenbsp/cart-bundle
配置
1、注册 Bundle:
// app/AppKernel.php public function registerBundles() { return array( // ... new Thenbsp\CartBundle\ThenbspCartBundle() // ... ); }
2、实现商品接口:
实现商品接口 Thenbsp\CartBundle\Core\EntityInterface
,该接口包含以下方法:
// 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(); } } }
订阅监听器:
// src/AppBundle/Resources/config/services.yml cart.listener: class: AppBundle\EventListener\CartListener tags: - { name: kernel.event_subscriber }