ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅!
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠΎΠ΄ΡΠ»Ρ Ρ 24.04.2017 Π²Π΅Π΄Π΅ΡΡΡ Π·Π΄Π΅ΡΡ: dvizh/yii2-cart. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Dvizh, ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΌ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ., (*1)
Yii2-cart
ΠΡΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΊΠΎΡΠ·ΠΈΠ½Ρ Π΄Π»Ρ Yii2 ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΊΠΎΡΠ·ΠΈΠ½Ρ Π»ΡΠ±ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΡΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ pistol88\cart\interfaces\CartElement, (*2)
, (*3)
ΠΠ»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° Π·Π°ΠΊΠ°Π·Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ: pistol88/yii2-order., (*4)
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, (*5)
php composer require pistol88/yii2-cart "*"
ΠΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² composer.json, (*6)
"pistol88/yii2-cart": "*",
Π Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ, (*7)
php composer update
ΠΠ°Π»Π΅Π΅, ΠΌΠΈΠ³ΡΠΈΡΡΠ΅ΠΌ Π±Π°Π·Ρ:, (*8)
php yii migrate --migrationPath=vendor/pistol88/yii2-cart/migrations
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ cart, (*9)
'components' => [
'cart' => [
'class' => 'pistol88\cart\Cart',
'currency' => 'Ρ.', //ΠΠ°Π»ΡΡΠ°
'currencyPosition' => 'after', //after ΠΈΠ»ΠΈ before (ΠΏΠΎΠ·ΠΈΡΠΈΡ Π·Π½Π°ΡΠΊΠ° Π²Π°Π»ΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅Π½Ρ)
'priceFormat' => [2,'.', ''], //Π€ΠΎΡΠΌΠ° ΡΠ΅Π½Ρ
],
//...
]
Π ΠΌΠΎΠ΄ΡΠ»Ρ (Π΅ΡΠ»ΠΈ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ), (*10)
'modules' => [
'cart' => [
'class' => 'pistol88\cart\Module',
],
//...
]
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² ΠΊΠΎΡΠ·ΠΈΠ½Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ.
ΠΡΠΈΠΌΠ΅Ρ ΡΠΊΡΠΈΠΎΠ½Π°, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΡΠΎΠ²Π°Ρ Π² ΠΊΠΎΡΠ·ΠΈΠ½Ρ:, (*11)
//use...
class ProductController extends Controller
{
public function actionAddToCart($id)
{
//ΠΡΠ±Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ
$model = $this->findModel($id);
//ΠΠ»Π°Π΄Π΅ΠΌ Π΅Π΅ Π² ΠΊΠΎΡΠ·ΠΈΠ½Ρ (Π² ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ 1, Π±Π΅Π· ΠΎΠΏΡΠΈΠΉ)
$cartElement = yii::$app->cart->put($model, 1, []);
}
}
ΠΠΎΠ»ΠΎΠΆΠΈΡΡ Π² ΠΊΠΎΡΠ·ΠΈΠ½Ρ ΠΌΠΎΠΆΠ½ΠΎ Π»ΡΠ±ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅ΠΌΠ΅Π½ΡΠΈΡΡΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ CartElement. ΠΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ:, (*12)
//...
class Product extends ActiveRecord implements \pistol88\cart\interfaces\CartElement
{
//..
public function getCartId()
{
return $this->id;
}
public function getCartName()
{
return $this->name;
}
public function getCartPrice()
{
return $this->price;
}
//ΠΠΏΡΠΈΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π² ΠΊΠΎΡΠ·ΠΈΠ½Ρ
public function getCartOptions()
{
return [
'1' => [
'name' => 'Π¦Π²Π΅Ρ',
'variants' => ['1' => 'ΠΡΠ°ΡΠ½ΡΠΉ', '2' => 'ΠΠ΅Π»ΡΠΉ', '3' => 'Π‘ΠΈΠ½ΠΈΠΉ'],
],
'2' => [
'name' => 'Π Π°Π·ΠΌΠ΅Ρ',
'variants' => ['4' => 'XL', '5' => 'XS', '6' => 'XXL'],
]
];
}
//..
}
ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠΎΡΠ·ΠΈΠ½Ρ:, (*13)
//...
$elements = yii::$app->cart->elements;
ΠΠΈΠ΄ΠΆΠ΅ΡΡ
Π ΡΠΎΡΡΠ°Π² ΠΌΠΎΠ΄ΡΠ»Ρ Π²Ρ
ΠΎΠ΄ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ². ΠΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π°ΡΠΊΡΠΎΠΌ., (*14)
= BuyButton::widget([
'model' => $model,
'text' => 'ΠΠ°ΠΊΠ°Π·Π°ΡΡ',
'htmlTag' => 'a',
'cssClass' => 'custom_class'
]) ?>
= CartInformer::widget(['htmlTag' => 'a', 'offerUrl' => '/?r=cart', 'text' => '{c} Π½Π° {p}']); ?>
= TruncateButton::widget(); ?>
ElementsList::TYPE_FULL) ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠΏΠΈΡΠΊΠ°.
ΠΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΠΎΠ»Π΅ΠΉ ΡΠ΅ΡΠ΅Π· otherFields (['ΠΡΡΠ°ΡΠΎΠΊ' => 'amount']).
*/
?>
=ElementsList::widget(['type' => ElementsList::TYPE_DROPDOWN]);?>
=DeleteButton::widget(['model' => $item]);?>
=ChangeCount::widget(['model' => $item]);?>
ChangeOptions::TYPE_RADIO) */ ?>
=ChangeOptions::widget(['model' => $item]);?>
Π‘ΠΊΠΈΠ΄ΠΊΠΈ
Π‘ΠΊΠΈΠ΄ΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ(ΠΈΠ»ΠΈ) ΡΠΎΠ±ΡΡΠΈΠ΅. ΠΠΎΡΠ·ΠΈΠ½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅):, (*15)
'cart' => [
'class' => 'pistol88\cart\Cart',
//...
'as discount' => [
'class' => 'pistol88\cart\behaviors\Discount',
'percent' => 50,
],
],
ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΏΠ»ΡΠ΅ΡΡΡ ΠΊ ΡΠΎΠ±ΡΡΠΈΡ EVENT_CART_COST ΠΈ Π·Π°Π΄Π°Π΅Ρ ΡΠΊΠΈΠ΄ΠΊΡ (ΡΠΌ. pistol88\cart\behaviors\Discount)., (*16)
ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΠ΅ΠΏΠΈΡΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ ΠΊ ΡΠΎΠ±ΡΡΠΈΡ:, (*17)
'cart' => [
'class' => 'pistol88\cart\Cart',
//...
'on cart_cost' => function($event) {
$event->cost = ($event->cost*50)/100;
}
],
Π‘ΠΎΠ±ΡΡΠΈΡ
ΠΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΊΠΎΡΠ·ΠΈΠ½Ρ:, (*18)
- EVENT_CART_COST - ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΉ ΡΠ΅Π½Ρ
- EVENT_CART_COUNT - ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π°
- EVENT_CART_TRUNCATE - ΠΎΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠ·ΠΈΠ½Ρ
- EVENT_CART_PUT - Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
- EVENT_ELEMENT_COST - ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π½Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
- EVENT_ELEMENT_ROUNDING - ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π½Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°