PHPackages                             komer45/yii2-balance - 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. komer45/yii2-balance

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

komer45/yii2-balance
====================

its a balance module

21641PHP

Since Feb 3Pushed 9y ago1 watchersCompare

[ Source](https://github.com/komer45/yii2-balance)[ Packagist](https://packagist.org/packages/komer45/yii2-balance)[ RSS](/packages/komer45-yii2-balance/feed)WikiDiscussions master Synced 4w ago

READMEChangelogDependenciesVersions (1)Used By (0)

Yii2-balance
============

[](#yii2-balance)

Это модуль для реализации кошелька пользователя. Кошелек создается автоматически для нового пользователя, так же можно создать кошелек для уже существующего пользователя, или для всех пользователей, у которых еще нет кошелька, по нажатию на соответствующую кнопку на странице кошельков пользователей. Установка
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[](#это-модуль-для-реализации-кошелька-пользователя-кошелек-создается-автоматически-для-нового-пользователя-так-же-можно-создать-кошелек-для-уже-существующего-пользователя-или-для-всех-пользователей-у-которых-еще-нет-кошелька-по-нажатию-на-соответствующую-кнопку-на-странице-кошельков-пользователейустановка)

Выполнить команду

```
php composer require komer45/yii2-balance "*"

```

Или добавить в composer.json

```
"komer45/yii2-balance": "*",

```

И выполнить

```
php composer update

```

Далее, мигрируем базу:

```
php yii migrate --migrationPath=vendor/komer45/yii2-balance/migrations

```

Подключение и настройка
-----------------------

[](#подключение-и-настройка)

Для пользования необходимо подключить модуль в конфиге:

```
	'modules' => [
		'balance' => [
				'class' => 'komer45\balance\Module',
				'adminRoles' => ['superadmin', 'administrator'],
				'otherRoles' => ['manager', 'user'],
				'currencyName' => 'баллов'
				],
	...
	]

```

Для доступа к компоненту (в данном модуле - для совершения) в том же конфиге необходимо подключить обращение:

```
	'components' => [
	...
		'balance' => [
			'class' => 'komer45\balance\Balance'
		],
	...
	]

```

Если данный модуль предполагается использовать совместно с модулем yii2-partnership, то в конфиге к модулю partnership необходимо подписаться на событие совершения операции перевода данного модуля:

```
'partnership' => [
            'class' => 'komer45\partnership\Module',
            'layout' => 'main',
			'adminRoles' => ['superadmin', 'administrator'],
				'on makePayment' => function($event){
					$model = $event->model;
					$userId = Yii::$app->Partnership->getUserByPartnerId($model->partner_id);
					$balance = Yii::$app->balance->getUserScore($userId);
					Yii::$app->balance->addTransaction($balance->id, 'in', $model->sum, 'partnership rewads');
				}
],
```

Для того, чтобы кошелек автоматически создавался для пользователя нужно модифицировать стандартную модель 'User'(commmon\\models\\User) следующим образом:

```
...
use komer45\balance\models\Score;
...
	public function afterSave($p1, $p2)
	{
		$findUser = Score::find()->where(['user_id' => $this->getId()])->one();
		if (!$findUser){
			$userBalance = new Score;
			$userBalance->user_id = $this->getId();
			$userBalance->balance = 0;

			if($userBalance->validate()){
				return $userBalance->save();
			} else die('Uh-oh, somethings went wrong!');
		}
	}

```

В этой же модели (ниже) необходимо добавить метод getScore, который отвечает за получение текущего остатка пользователя:

```
public function getScore($userId = null)
	{
			if ($userId){
				return $userScore = Score::find()->where(['user_id' => $userId])->one()->balance;
			}
			return $userScore = Score::find()->where(['user_id' => Yii::$app->user->id])->one()->balance;
	}

```

Если модель подключаемого User не соответствует 'common\\models\\User' то ее необходимо задать в Модуле(Module.php) изменив переменную $userModule; Для облегчения переходов и информатирования пользователя о количестве баланса предусмотренны следующие виджеты:

```

```

###  Health Score

23

—

LowBetter than 26% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community8

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://avatars.githubusercontent.com/u/20283261?v=4)[komer45](/maintainers/komer45)[@komer45](https://github.com/komer45)

---

Top Contributors

[![komer45](https://avatars.githubusercontent.com/u/20283261?v=4)](https://github.com/komer45 "komer45 (31 commits)")

### Embed Badge

![Health badge](/badges/komer45-yii2-balance/health.svg)

```
[![Health](https://phpackages.com/badges/komer45-yii2-balance/health.svg)](https://phpackages.com/packages/komer45-yii2-balance)
```

###  Alternatives

[dsposito/argo

A shipping utility.

23184.2k](/packages/dsposito-argo)

PHPackages © 2026

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