dev-master
9999999-devYii2 crud actions
BSD-3-Clause
The Requires
yii2 basket
Yii2 crud actions
В composer.json:, (*1)
"require": { ... "andreykluev/yii2-shop-basket":"dev-master" },
Для изменения корзины, нужно гетом передать id
(id AR-модели) и count
(количество).
Если id == 0
- добавиться новый товар,
если count == 0
- товар удалиться из корзины,
в противном случае измениться количество., (*2)
``` php use andreykluev\shopbasket\BasketAction;, (*3)
class BasketController extends Controller {, (*4)
... public function actions() { return array( 'update' => [ 'class' => BasketAction::className(), 'onBeforeAction' => [$this, 'beforeUpdate'], 'onAfterAction' => [$this, 'afterUpdate'], ], ... ); } public function beforeUpdate() { // Ваш код } public function afterUpdate($isUpdate = false) { // Ваш код }
### Подключаем компонент ### ``` php use andreykluev\shopbasket\behaviors\BasketUserBehavior; class User extends ActiveRecord implements IdentityInterface { ... public function behaviors() { return [ BasketUserBehavior::className(), ]; } ...
``` php use andreykluev\shopbasket\behaviors\BasketProductBehavior;, (*5)
class Product extends ActiveRecord { ... public function behaviors() { return [ BasketUserBehavior::className(), ]; } ..., (*6)
``` php 'components' => [ ... 'basket' => [ 'class' => 'andreykluev\shopbasket\BasketComponent', 'userClass' => 'common\models\User', 'productClass' => 'common\models\Product', 'onLogin' => 'merge' ]
В любом месте приложение можно обратиться к корзине следующим образом:, (*7)
php
Yii::$app->basket->getBasketProducts();
Yii::$app->basket->getBasketCost();
Yii::$app->basket->getBasketCount();
Yii::$app->basket->getBasketTotal();
, (*8)
getBasketProducts()
- Возвращает список товаров в корзине, (*9)
getBasketCost()
- Возвращает сумму товаров в корзине, (*10)
getBasketCount()
- Возвращает количество наименований товара в корзине, (*11)
getBasketTotal()
- Возвращает количество единиц товаров в корзине, (*12)
onLogin
при авторизации пользователяsum
- корзина в сессии и корзина в БД (если такая была) будут объеденины, а кол-во одинаковых товаров просуммируются, (*13)
new
- корзина в БД будет полностью заменена новой, (*14)
merge
- в БД будут добавлены только новые товары, (*15)
max
- в БД будут добавлены новые товары, а у совпадающих сохраниться наибольшее кол-во, (*16)
Yii2 crud actions
BSD-3-Clause
yii2 basket