PHPackages                             thenbsp/cart-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. thenbsp/cart-bundle

ActiveLibrary[Framework](/categories/framework)

thenbsp/cart-bundle
===================

Shopping Cart Bundle for Symfony2

v1.0.0(10y ago)122142MITPHPPHP &gt;=5.3.9

Since Nov 27Pushed 8y ago1 watchersCompare

[ Source](https://github.com/thenbsp/CartBundle)[ Packagist](https://packagist.org/packages/thenbsp/cart-bundle)[ Docs](http://github.com/thenbsp/CartBundle)[ RSS](/packages/thenbsp-cart-bundle/feed)WikiDiscussions master Synced 4w ago

READMEChangelogDependencies (1)Versions (2)Used By (0)

Shopping Cart for Symfony2
==========================

[](#shopping-cart-for-symfony2)

安装
--

[](#安装)

```
composer require thenbsp/cart-bundle

```

配置
--

[](#配置)

1、注册 Bundle：

```
// app/AppKernel.php

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

2、实现商品接口：

实现商品接口 `Thenbsp\CartBundle\Core\EntityInterface`，该接口包含以下方法：

方法名称说明getId()获取商品唯一标识，比如 ID、token 等getPrice()获取商品单价，即最终价格（float 类型）```
// 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');
```

方法说明返回$cart-&gt;addItem($entity, $quantity);添加商品到购物车null$cart-&gt;hasItem($entityOrId);检测购物车中是否包含某个商品boolean$cart-&gt;removeItem($entityOrId);从购物车中移除某商品null$cart-&gt;getItems();获取购物车的全部商品array$cart-&gt;count();获取购物车中的商品个数integer$cart-&gt;total();获取购物车中的商品总计float$cart-&gt;totalFormated();格式化购物车中的商品总计string$cart-&gt;isEmpty();检测购物车是否为空boolean$cart-&gt;clear();清空购物车null事件
--

[](#事件)

事件名称说明Thenbsp\\CartBundle\\Event\\Events::ADD\_BEFORE添加到购物车之前调用（可阻止）Thenbsp\\CartBundle\\Event\\Events::ADD\_AFTER添加到购物车之后调用Thenbsp\\CartBundle\\Event\\Events::REMOVE\_BEFORE移除指定商品之前调用（可阻止）Thenbsp\\CartBundle\\Event\\Events::REMOVE\_AFTER移除指定商品之后调用Thenbsp\\CartBundle\\Event\\Events::CLEAR\_BEFORE清空购物车之前调用（可阻止）Thenbsp\\CartBundle\\Event\\Events::CLEAR\_AFTER清空购物车之后调用监听添加到购物车事件：

```
// 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 }
```

###  Health Score

30

—

LowBetter than 62% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

3867d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7320ed2a6049fb9a69b0d817094109d4aa77647df08b8795c67e22b07fed0bab?d=identicon)[thenbsp](/maintainers/thenbsp)

---

Top Contributors

[![thenbsp](https://avatars.githubusercontent.com/u/2419899?v=4)](https://github.com/thenbsp "thenbsp (10 commits)")

---

Tags

cartshoppingcartbundle

### Embed Badge

![Health badge](/badges/thenbsp-cart-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/thenbsp-cart-bundle/health.svg)](https://phpackages.com/packages/thenbsp-cart-bundle)
```

###  Alternatives

[lukepolo/laracart

A simple cart for Laravel

583148.8k1](/packages/lukepolo-laracart)[sylius/sylius-standard

Starting point for projects powered by Sylius eCommerce.

275293.5k](/packages/sylius-sylius-standard)[rcsofttech/audit-trail-bundle

Enterprise-grade, high-performance Symfony audit trail bundle. Automatically track Doctrine entity changes with split-phase architecture, multiple transports (HTTP, Queue, Doctrine), and sensitive data masking.

1175.2k](/packages/rcsofttech-audit-trail-bundle)[jackiedo/cart

A package used to create and manage carts (such as shopping, recently viewed, compared items...) in Laravel application.

20853.6k](/packages/jackiedo-cart)[yabhq/laravel-cart

Simple yet customizable Laravel shopping cart

203.0k](/packages/yabhq-laravel-cart)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
