This model is a simple ZF2 Shopping Cart solution. Provide basic functionality to create and modify Shopping Cart with any content in it. Easy to extend, just create your own Cart Entity and push it during Cart initialisation.
I was inspired to create the ShoppingCart by great job of Vincenzo Provenza and Concetto Vecchio (http://github.com/vikey89/ZendCart). Keeped the same idea behind but made it more flexible, easier to extend and simplier to change.
For the installation uses composer composer. Add this project in your composer.json:
"require": {
"cyrkulewski/shopping-cart": "dev-master"
}
Configuration:
- Add the module of
config/application.config.php
under the arraymodules
, insertShoppingCart
. - Copy a file named
shoppingcart.global.php.dist
toconfig/autoload/
and change name toshoppingcart.global.php
. - Modify config to fit your expectations.
You can insert as many items to the cart as you want. Each entry in cart will have unique token to work with. Example with one product:
$product = array(
'id' => 'XYZ',
'qty' => 1,
'price' => 15.15,
'product' => 'Book: ZF2 for beginners',
);
$this->ShoppingCart()->insert($product);
Example with 2 products:
$products = array(
array(
'id' => 'XYZ',
'qty' => 1,
'price' => 15.15,
'product' => 'Book: ZF2 for beginners',
),
array(
'id' => 'ZYX',
'qty' => 3,
'price' => 19.99,
'product' => 'Book: ZF2 for advanced users',
)
);
$this->ShoppingCart()->insert($products);
$token => '4b848870240fd2e976ee59831b34314f7cfbb05b';
$this->ShoppingCart()->remove($token);
Erase Shopping Cart completely.
$this->ShoppingCart()->destroy();
Get all content of Cart.
$this->ShoppingCart()->cart();
$this->ShoppingCart()->total_sum();
$this->ShoppingCart()->total_items();
return new ViewModel(array(
'cart' => $this->ShoppingCart()->cart(),
'total_items' => $this->ShoppingCart()->total_items(),
'total_sum' => $this->ShoppingCart()->total_sum(),
));
Provided Shopping Cart Entity is really basic one. You can change the structure of it. For example, if you need to add options to each item in the cart or to provide discount field and so on. What you should do:
- copy ShoppingCart/Entity/ShoppingCartEntity to your module
- modify YourModule/Entity/ShoppingCartEntity: add any fields you need to have
- during Shopping Cart initialisation provide your YourModule/Entity/ShoppingCartEntity
$this->ShoppingCart()->setEntityPrototype(new YourModule/Entity/ShoppingCartEntity());
Function | Description |
$this->ShoppingCart()->insert(); | Add item(s) to cart. |
$this->ShoppingCart()->remove(); | Delete the item from the cart. |
$this->ShoppingCart()->destroy(); | Delete all items from the cart. |
$this->ShoppingCart()->cart(); | Extracts all items from the cart. |
$this->ShoppingCart()->total_sum(); | Counts the total sum of all items in the cart. |
$this->ShoppingCart()->total_items(); | Counts the total number of all items in the cart. |
Aleksander Cyrkulewski - [email protected]