2017 © Pedro PelΓ‘ez
 

yii2-extension shopping-cart-component

ShoppingCart for Yii2

image

developeruz/shopping-cart-component

ShoppingCart for Yii2

  • Sunday, July 26, 2015
  • by DeveloperUz
  • Repository
  • 1 Watchers
  • 2 Stars
  • 33 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 41 Forks
  • 1 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

Shopping Cart для Yii2

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ., (*1)

ИдСя основана на Shopping Cart для Yii 1.x, (*2)

ΠšΠΎΡ€Π·ΠΈΠ½Π° - ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, для хранСния ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ, ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ., (*3)

БостояниС ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ запросами хранится Π² сСссии ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ., (*4)

Установка ΠΈ настройка

Установка:

php composer.phar require developeruz/shopping-cart-component "*", (*5)

1 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Ρ„ΠΈΠ³

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ:, (*6)

'components' => [
     'shoppingCart' =>
          [
              'class' => 'developeruz\shopping\EShoppingCart'
          ]
]

ИспользованиС Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ:, (*7)

$cart = Yii::$app->shoppingCart;

2 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ нСобходимости

  $cart = Yii::createObject('developeruz\shopping\EShoppingCart');
  $cart->init();

  $book = Books::findOne(1);
  $cart->put($book);

ΠŸΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ модСль

МодСли, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ добавлСния Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс IECartPosition:, (*8)

use developeruz\shopping\IECartPosition;

class Book extends CActiveRecord implements IECartPosition {
    ...
    public function getId()
    {
        return $this->id;
    }

    public function getPrice()
    {
        return $this->price;
    }

    public function getAviable()
    {
        return true;
    }

    public function getTitle()
    {
        return $this->title;
    }

    public function getCostWithDiscount($quality)
    {
        if($quality > 10)
            return $quality * $this->getPrice() * 0.75;
        else return $quality * $this->getPrice();
    }
}

API

EShoppingCart::put($position, $quantity)

ДобавляСт Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Ρ‚ΠΎΠ²Π°Ρ€Π° Π² количСствС $quantity. Если позиция Ρ‚ΠΎΠ²Π°Ρ€Π° ΡƒΠΆΠ΅ Π±Ρ‹Π»Π° Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅, Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ, Π° количСство увСличиваСтся Π½Π° $quantity, (*9)

$book = Books::findOne(1);
$cart->put($book); //Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ 1 позиция с id=1 Π² количСствС 1 Π΅Π΄ΠΈΠ½ΠΈΡ†Π°.
$cart->put($book,2); //Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ 1 позиция с id=1 Π² количСствС 3 Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹.
$book2 = Books::findOne(2);
$cart->put($book2); //Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ 2 ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ с id=1 ΠΈ id=2

EShoppingCart::update($position, $quantity)

ΠžΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ‚ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Ρ‚ΠΎΠ²Π°Ρ€Π°. Если позиция Ρ‚ΠΎΠ²Π°Ρ€Π° ΡƒΠΆΠ΅ Π±Ρ‹Π»Π° Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅, Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ, Π° количСство установится Π² $quantity. Если ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π½Π΅ Π±Ρ‹Π»ΠΎ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅, Ρ‚ΠΎ ΠΎΠ½Π° добавляСтся Π² Π½Π΅ΠΉ. Если установлСно $quantity<1, Ρ‚ΠΎ позиция удаляСтся ΠΈΠ· ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹, (*10)

$book = Books::findOne(1);
$cart->put($book); //Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ 1 позиция с id=1 Π² количСствС 1 Π΅Π΄ΠΈΠ½ΠΈΡ†Π°.
$cart->update($book,2); //Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ 1 позиция с id=1 Π² количСствС 2 Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹.

EShoppingCart::remove($key)

УдаляСт ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΈΠ· ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹, (*11)

$book = Books::findOne(1);
$cart->put($book,2); //Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ 1 позиция с id=1 Π² количСствС 2 Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹.
$cart->remove($book); //Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ Π½Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ

EShoppingCart::clear()

ΠžΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ, (*12)

$cart->clear();

EShoppingCart::isEmpty()

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true, Ссли ΠΊΠΎΡ€Π·ΠΈΠ½Π° пустая., (*13)

if($cart->isEmpty())

EShoppingCart::getCount()

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ, (*14)

$cart->put($book,2);
$cart->put($book2,3);
$cart->getCount(); //2

EShoppingCart::getItemsCount()

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², (*15)

$cart->put($book,2);
$cart->put($book2,3);
$cart->getItemsCount(); //5

ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π² качСствС Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ., (*16)

[php]
$cart->put($book,2);
$cart->put($book2,3);
$cart->getItemsCount($book); //2

EShoppingCart::getCost()

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ всСй ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹, (*17)

$cart->put($book,2); //price=100
$cart->put($book2,1); //price=200
$cart->getCost(); //400

ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π² качСствС Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ. И Π² этом случаи Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ для Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, (*18)

$cart->put($book,2); //price=100
$cart->put($book2,1); //price=200
$cart->getCost($book); //2*100 = 200

EShoppingCart::getDiscountCost()

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ скидки, (*19)

$cart->put($book,2); //price=100 скидка 25% ΠΏΡ€ΠΈ ΠΏΠΎΠΊΡƒΠΏΠΊΠ΅ 2 ΡˆΡ‚
$cart->put($book2,1); //price=200
$cart->getDiscountCost(); //350

ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π² качСствС Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ. И Π² этом случаи Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ для Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, (*20)

$cart->put($book,2); //price=100
$cart->put($book2,1); //price=200
$cart->getDiscountCost($book); //2*100*0.75 = 150

EShoppingCart::getPositions()

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ, (*21)

$positions = $cart->getPositions();
foreach($positions as $position) {
...
}

КаТдая позиция содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅: item - тСкстовоС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠ΅ Ρ‡Π΅Ρ€Π΅Π· $model->getTitle(), quality - количСство price - Ρ†Π΅Π½Π° Π·Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Ρ‚ΠΎΠ²Π°Ρ€Π° ($model->getPrice()) cost - общая ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Π° cost_with_discount - общая ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ скидок, (*22)

ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π² качСствС Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ., (*23)

$positions = $cart->getPositions($book1);

The Versions

26/07 2015

dev-master

9999999-dev

ShoppingCart for Yii2

  Sources   Download

MIT

The Requires

 

component yii2 shoppingcart