andreykluev / yii2-shop-basket
Yii2 crud 操作
dev-master
2016-06-10 11:35 UTC
Requires
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2024-09-28 17:12:37 UTC
README
安装
在 composer.json 中
"require": {
...
"andreykluev/yii2-shop-basket":"dev-master"
},
使用
要修改购物车,需要通过 GET 传递 id
(AR 模型 id)和 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
变体
sum
- 会话中的购物车和数据库中的购物车(如果存在)将合并,相同商品的数量将相加
new
- 数据库中的购物车将被完全替换为新购物车
merge
- 仅将新商品添加到数据库中
max
- 将新商品添加到数据库中,而匹配的商品将保留数量最多的一个