PHPackages                             andreykluev/yii2-shop-basket - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. andreykluev/yii2-shop-basket

ActiveYii2-extension[Utility &amp; Helpers](/categories/utility)

andreykluev/yii2-shop-basket
============================

Yii2 crud actions

44624[7 issues](https://github.com/AndreyKluev/yii2-shop-basket/issues)PHP

Since Jun 10Pushed 9y ago2 watchersCompare

[ Source](https://github.com/AndreyKluev/yii2-shop-basket)[ Packagist](https://packagist.org/packages/andreykluev/yii2-shop-basket)[ RSS](/packages/andreykluev-yii2-shop-basket/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

ShopBasket - actions &amp; behaviors extension for Yii
======================================================

[](#shopbasket---actions--behaviors-extension-for-yii)

Установка
---------

[](#установка)

В composer.json:

```
"require": {
	...
	"andreykluev/yii2-shop-basket":"dev-master"
},

```

Использование
-------------

[](#использование)

Для изменения корзины, нужно гетом передать `id` (id AR-модели) и `count` (количество). Если `id == 0` - добавиться новый товар, если `count == 0` - товар удалиться из корзины, в противном случае измениться количество.

```
use andreykluev\shopbasket\BasketAction;

class BasketController extends Controller
{

	...

	public function actions()
	{
		return array(
			'update' => [
				'class' => BasketAction::className(),
				'onBeforeAction' =>  [$this, 'beforeUpdate'],
				'onAfterAction' =>  [$this, 'afterUpdate'],
			],

			...
		);
	}

	public function beforeUpdate()
	{
		// Ваш код
	}

	public function afterUpdate($isUpdate = false)
	{
		// Ваш код
	}
```

### Подключаем компонент

[](#подключаем-компонент)

```
use andreykluev\shopbasket\behaviors\BasketUserBehavior;

class User extends ActiveRecord implements IdentityInterface
{
	...
	public function behaviors()
	{
		return [
			BasketUserBehavior::className(),
		];
	}
	...
```

```
use andreykluev\shopbasket\behaviors\BasketProductBehavior;

class Product extends ActiveRecord
{
	...
	public function behaviors()
	{
		return [
			BasketUserBehavior::className(),
		];
	}
	...
```

```
	'components' => [

		...

		'basket' => [
			'class' => 'andreykluev\shopbasket\BasketComponent',
			'userClass' => 'common\models\User',
			'productClass' => 'common\models\Product',
			'onLogin' => 'merge'
		]
```

В любом месте приложение можно обратиться к корзине следующим образом:

```
	Yii::$app->basket->getBasketProducts();
	Yii::$app->basket->getBasketCost();
	Yii::$app->basket->getBasketCount();
	Yii::$app->basket->getBasketTotal();
```

Методы
------

[](#методы)

`getBasketProducts()` - Возвращает список товаров в корзине

`getBasketCost()` - Возвращает сумму товаров в корзине

`getBasketCount()` - Возвращает количество наименований товара в корзине

`getBasketTotal()` - Возвращает количество единиц товаров в корзине

Варианты `onLogin` при авторизации пользователя
-----------------------------------------------

[](#варианты-onlogin-при-авторизации-пользователя)

`sum` - корзина в сессии и корзина в БД (если такая была) будут объеденины, а кол-во одинаковых товаров просуммируются

`new` - корзина в БД будет полностью заменена новой

`merge` - в БД будут добавлены только новые товары

`max` - в БД будут добавлены новые товары, а у совпадающих сохраниться наибольшее кол-во

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance0

Infrequent updates — may be unmaintained

Popularity19

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity41

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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/afa4af174a3f82f63c28e6a9c1ebc586af87c8f2c297753926ad429536f72da2?d=identicon)[AndreyKluev](/maintainers/AndreyKluev)

---

Top Contributors

[![AndreyKluev](https://avatars.githubusercontent.com/u/1557379?v=4)](https://github.com/AndreyKluev "AndreyKluev (22 commits)")

### Embed Badge

![Health badge](/badges/andreykluev-yii2-shop-basket/health.svg)

```
[![Health](https://phpackages.com/badges/andreykluev-yii2-shop-basket/health.svg)](https://phpackages.com/packages/andreykluev-yii2-shop-basket)
```

###  Alternatives

[onmotion/yii2-telegram

Support chat for site based on Telegram bot

526.3k](/packages/onmotion-yii2-telegram)

PHPackages © 2026

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