dev-master
9999999-devYii2 crud actions
BSD-3-Clause
The Requires
yii2 basket
Wallogit.com
2017 © Pedro Peláez
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