PHPackages                             developeruz/shopping-cart-component - 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. developeruz/shopping-cart-component

ActiveYii2-extension

developeruz/shopping-cart-component
===================================

ShoppingCart for Yii2

2391[1 issues](https://github.com/developeruz/shopping-cart-component/issues)PHP

Since Jul 26Pushed 10y ago1 watchersCompare

[ Source](https://github.com/developeruz/shopping-cart-component)[ Packagist](https://packagist.org/packages/developeruz/shopping-cart-component)[ RSS](/packages/developeruz-shopping-cart-component/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Shopping Cart для Yii2
======================

[](#shopping-cart-для-yii2)

Компонент для реализации корзины моделей.

Идея основана на [Shopping Cart для Yii 1.x](https://github.com/yiiext/shopping-cart-component)

Корзина - объект контейнер, для хранения коллекции позиций, и методами для работы с этой коллекцией.

Состояние корзины между запросами хранится в сессии пользователя.

Установка и настройка
---------------------

[](#установка-и-настройка)

\###Установка:

php composer.phar require developeruz/shopping-cart-component "\*"

### 1 вариант: Подключение через конфиг

[](#1-вариант-подключение-через-конфиг)

Добавить:

```
'components' => [
     'shoppingCart' =>
          [
              'class' => 'developeruz\shopping\EShoppingCart'
          ]
]
```

Использование в приложении:

```
$cart = Yii::$app->shoppingCart;
```

### 2 вариант: Подключение по необходимости

[](#2-вариант-подключение-по-необходимости)

```
  $cart = Yii::createObject('developeruz\shopping\EShoppingCart');
  $cart->init();

  $book = Books::findOne(1);
  $cart->put($book);
```

Подготавливаем модель
---------------------

[](#подготавливаем-модель)

Модели, которым необходимо дать возможность добавления в корзину, должны реализовать интерфейс `IECartPosition`:

```
use developeruz\shopping\IECartPosition;

class Book extends CActiveRecord implements IECartPosition {
    ...
    public function getId()
    {
        return $this->id;
    }

    public function getPrice()
    {
        return $this->price;
    }

    public function getAviable()
    {
        return true;
    }

    public function getTitle()
    {
        return $this->title;
    }

    public function getCostWithDiscount($quality)
    {
        if($quality > 10)
            return $quality * $this->getPrice() * 0.75;
        else return $quality * $this->getPrice();
    }
}
```

API
---

[](#api)

### EShoppingCart::put($position, $quantity)

[](#eshoppingcartputposition-quantity)

Добавляет в корзину позицию товара в количестве $quantity. Если позиция товара уже была в корзине, то данные модели обновляются, а количество увеличивается на $quantity

```
$book = Books::findOne(1);
$cart->put($book); //в корзине 1 позиция с id=1 в количестве 1 единица.
$cart->put($book,2); //в корзине 1 позиция с id=1 в количестве 3 единицы.
$book2 = Books::findOne(2);
$cart->put($book2); //в корзине 2 позиции с id=1 и id=2
```

### EShoppingCart::update($position, $quantity)

[](#eshoppingcartupdateposition-quantity)

Обновляет в корзине позицию товара. Если позиция товара уже была в корзине, то данные модели обновляются, а количество установится в $quantity. Если позиции не было в корзине, то она добавляется в ней. Если установлено $quantity&lt;1, то позиция удаляется из корзины

```
$book = Books::findOne(1);
$cart->put($book); //в корзине 1 позиция с id=1 в количестве 1 единица.
$cart->update($book,2); //в корзине 1 позиция с id=1 в количестве 2 единицы.
```

### EShoppingCart::remove($key)

[](#eshoppingcartremovekey)

Удаляет позицию из корзины

```
$book = Books::findOne(1);
$cart->put($book,2); //в корзине 1 позиция с id=1 в количестве 2 единицы.
$cart->remove($book); //в корзине нет позиций
```

### EShoppingCart::clear()

[](#eshoppingcartclear)

Очищает корзину

```
$cart->clear();
```

### EShoppingCart::isEmpty()

[](#eshoppingcartisempty)

Возвращает true, если корзина пустая.

```
if($cart->isEmpty())
```

### EShoppingCart::getCount()

[](#eshoppingcartgetcount)

Возвращает количество позиций

```
$cart->put($book,2);
$cart->put($book2,3);
$cart->getCount(); //2
```

### EShoppingCart::getItemsCount()

[](#eshoppingcartgetitemscount)

Возвращает количество товаров

```
$cart->put($book,2);
$cart->put($book2,3);
$cart->getItemsCount(); //5
```

Может принимать в качестве не обязательного параметра позицию.

```
[php]
$cart->put($book,2);
$cart->put($book2,3);
$cart->getItemsCount($book); //2

```

### EShoppingCart::getCost()

[](#eshoppingcartgetcost)

Возвращает стоимость всей корзины

```
$cart->put($book,2); //price=100
$cart->put($book2,1); //price=200
$cart->getCost(); //400
```

Может принимать в качестве не обязательного параметра позицию. И в этом случаи возвращает стоимость для данной позиции

```
$cart->put($book,2); //price=100
$cart->put($book2,1); //price=200
$cart->getCost($book); //2*100 = 200
```

### EShoppingCart::getDiscountCost()

[](#eshoppingcartgetdiscountcost)

Возвращает стоимость с учетом скидки

```
$cart->put($book,2); //price=100 скидка 25% при покупке 2 шт
$cart->put($book2,1); //price=200
$cart->getDiscountCost(); //350
```

Может принимать в качестве не обязательного параметра позицию. И в этом случаи возвращает стоимость для данной позиции

```
$cart->put($book,2); //price=100
$cart->put($book2,1); //price=200
$cart->getDiscountCost($book); //2*100*0.75 = 150
```

### EShoppingCart::getPositions()

[](#eshoppingcartgetpositions)

Возвращает массив позиций

```
$positions = $cart->getPositions();
foreach($positions as $position) {
...
}
```

Каждая позиция содержит следующие данные: item - текстовое обозначение товара, получаемое через $model-&gt;getTitle(), quality - количество price - цена за единицу товара ($model-&gt;getPrice()) cost - общая стоимость товара cost\_with\_discount - общая стоимость с учетом скидок

Может принимать в качестве не обязательного параметра позицию.

```
$positions = $cart->getPositions($book1);
```

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance10

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor2

2 contributors hold 50%+ of commits

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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/2b19e4f376a7fc95ccaf38274dc7768c7216d419b75b5a6da5d935c5d8521db3?d=identicon)[DeveloperUz](/maintainers/DeveloperUz)

---

Top Contributors

[![samdark](https://avatars.githubusercontent.com/u/47294?v=4)](https://github.com/samdark "samdark (7 commits)")[![AleksKu](https://avatars.githubusercontent.com/u/376536?v=4)](https://github.com/AleksKu "AleksKu (6 commits)")[![developeruz](https://avatars.githubusercontent.com/u/8788118?v=4)](https://github.com/developeruz "developeruz (4 commits)")[![cebe](https://avatars.githubusercontent.com/u/189796?v=4)](https://github.com/cebe "cebe (2 commits)")[![slavcodev](https://avatars.githubusercontent.com/u/757721?v=4)](https://github.com/slavcodev "slavcodev (2 commits)")[![creocoder](https://avatars.githubusercontent.com/u/896494?v=4)](https://github.com/creocoder "creocoder (1 commits)")[![VladimirRakovich](https://avatars.githubusercontent.com/u/992656?v=4)](https://github.com/VladimirRakovich "VladimirRakovich (1 commits)")

---

Tags

e-commerceextensionyii2

### Embed Badge

![Health badge](/badges/developeruz-shopping-cart-component/health.svg)

```
[![Health](https://phpackages.com/badges/developeruz-shopping-cart-component/health.svg)](https://phpackages.com/packages/developeruz-shopping-cart-component)
```

PHPackages © 2026

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