andreykluev/yii2-shop-basket

Yii2 crud 操作

安装: 461

依赖者: 1

建议者: 0

安全: 0

星标: 4

关注者: 3

分支: 4

开放问题: 7

类型:yii2-extension

dev-master 2016-06-10 11:35 UTC

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 - 将新商品添加到数据库中,而匹配的商品将保留数量最多的一个