2017 © Pedro PelΓ‘ez
 

yii2-extension yii2-cart

yii2-cart it's a simple cart module to collect application models, that implement cart interface + widgets

image

dvizh/yii2-cart

yii2-cart it's a simple cart module to collect application models, that implement cart interface + widgets

  • Monday, February 5, 2018
  • by pistol88
  • Repository
  • 6 Watchers
  • 15 Stars
  • 1,885 Installations
  • PHP
  • 3 Dependents
  • 0 Suggesters
  • 7 Forks
  • 6 Open issues
  • 1 Versions
  • 19 % Grown

The README.md

Yii2-cart

Π­Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ для Yii2 Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ Π»ΡŽΠ±ΡƒΡŽ модСль, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ интСрфСйс dvizh\cart\interfaces\CartElement, (*1)

yii2-cart, (*2)

Для добавлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° Π·Π°ΠΊΠ°Π·Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ: dvizh/yii2-order., (*3)

Установка

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, (*4)

php composer require dvizh/yii2-cart "@dev"

Или Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ require composer.json, (*5)

"dvizh/yii2-cart": "@dev",

И Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, (*6)

php composer update

Π”Π°Π»Π΅Π΅, ΠΌΠΈΠ³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Π±Π°Π·Ρƒ:, (*7)

php yii migrate --migrationPath=vendor/dvizh/yii2-cart/src/migrations

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ настройка

Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» прилоТСния Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ cart, (*8)

    'components' => [
        'cart' => [
            'class' => 'dvizh\cart\Cart',
            'currency' => 'Ρ€.', //Π’Π°Π»ΡŽΡ‚Π°
            'currencyPosition' => 'after', //after ΠΈΠ»ΠΈ before (позиция Π·Π½Π°Ρ‡ΠΊΠ° Π²Π°Π»ΡŽΡ‚Ρ‹ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ†Π΅Π½Ρ‹)
            'priceFormat' => [2,'.', ''], //Π€ΠΎΡ€ΠΌΠ° Ρ†Π΅Π½Ρ‹
        ],
        //...
    ]

И ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹), (*9)

    'modules' => [
        'cart' => [
            'class' => 'dvizh\cart\Module',
        ],
        //...
    ]

ИспользованиС

МоТно Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ элСмСнты ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ эктиона, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ:, (*10)

//use...
class ProductController extends Controller
{
    public function actionAddToCart($id)
    {
        //Π›ΡŽΠ±Π°Ρ модСль
        $model = $this->findModel($id);
        //КладСм Π΅Π΅ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ (Π² количСствС 1, Π±Π΅Π· ΠΎΠΏΡ†ΠΈΠΉ)
        $cartElement = yii::$app->cart->put($model, 1, []);
    }
}

ΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π»ΡŽΠ±ΡƒΡŽ модСль, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ интСрфСйс CartElement. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠ΄Π΅Π»ΠΈ:, (*11)

//...
class Product extends ActiveRecord implements \dvizh\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'],
            ]
        ];
    }
    //..
}

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ элСмСнты ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹:, (*12)

//...
$elements = yii::$app->cart->elements;

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹

Π’ состав модуля Π²Ρ…ΠΎΠ΄ΠΈΡ‚ нСсколько Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ². ВсС Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ аяксом., (*13)




= 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]);?>

Π‘ΠΊΠΈΠ΄ΠΊΠΈ

Π‘ΠΊΠΈΠ΄ΠΊΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ(ΠΈΠ»ΠΈ) событиС. ΠšΠΎΡ€Π·ΠΈΠ½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ любоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅):, (*14)

        'cart' => [
            'class' => 'dvizh\cart\Cart',
            //...
            'as discount' => [
                'class' => 'dvizh\cart\behaviors\Discount',
                'percent' => 50,
            ],
        ],

ПовСдСниС цСпляСтся ΠΊ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ EVENT_CART_COST ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ скидку (см. dvizh\cart\behaviors\Discount)., (*15)

МоТно ΠΏΠΎΠ΄Ρ†Π΅ΠΏΠΈΡ‚ΡŒΡΡ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ:, (*16)

        'cart' => [
            'class' => 'dvizh\cart\Cart',
            //...
            'on cart_cost' => function($event) {
                $event->cost = ($event->cost*50)/100;
            }
        ],

Бобытия

ВсС события ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹:, (*17)

  • EVENT_CART_COST - ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰Π΅ΠΉ Ρ†Π΅Π½Ρ‹
  • EVENT_CART_COUNT - ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ количСства
  • EVENT_CART_TRUNCATE - ΠΎΡ‡ΠΈΡ‰Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹
  • EVENT_CART_PUT - Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта
  • EVENT_ELEMENT_COST - ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ†Π΅Π½Ρ‹ элСмСнта
  • EVENT_ELEMENT_ROUNDING - ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Ρ†Π΅Π½Ρ‹ элСмСнта

The Versions

05/02 2018

dev-master

9999999-dev https://github.com/dvizh/

yii2-cart it's a simple cart module to collect application models, that implement cart interface + widgets

  Sources   Download

Apache-2.0 BSD-3-Clause Apache

The Requires

 

by Ilya Pistol

yii2 module yii 2 application shop cart dvizh