THIS REPO IS BEING CONSIDERED FOR OWNERSHIP TRANSFER, PLEASE SEE HERE: #62 (comment)
Laravel Facade and Service Provider for Moltin\Cart
via Composer:
$ composer require moltin/laravel-cart
Add the following to your app/config/app.php to the service providers array:
'Moltin\Cart\CartServiceProvider',
Then add to the aliases array the following:
'Cart' => 'Moltin\Cart\Facade',
You should then be good to go and be able to access the cart using the following static interface:
// Format array of required info for item to be added to basket...
$items = array(
'id' => 1,
'name' => 'Juicy Picnic Hamper',
'price' => 120.00,
'quantity' => 1
);
// Make the insert...
Cart::insert($items);
// Let's see what we have have in there...
dd(Cart::totalItems());
###Config settings (Optional)
Publish the config file with php artisan vendor:publish
return array(
'storage' => 'session', //session, cache, file
// Cache
// Laravel documentation for more information
'cache_prefix' => 'moltin_cart_',
'cache_expire' => '-1', //in minutes, -1 permanent caching
// Filesystem
// Folder Name inside the Storage Path
'storage_folder_name' => 'moltin_cart',
// Identifier
// With a requestcookie (choose for storage: cache, the session will be expired), the cart could be reloaded from a http request, example: the customer could save his cart link (email, hyperlink) and reopen this later.
// If there is no request, the cookie will be loaded.
'identifier' => 'cookie', //cookie, requestcookie
//Request Cookie
'requestid' => 'CartID', //http input request identifier, example: your customer/backoffice could reload the cart in your shop controller, /public/shop?CartID=871f0bc18ca76e68bf7c3adf8f9426ef
);
Another key you can pass to your insert method is 'tax'. This is a percentage which you would like to be added onto the price of the item.
In the below example we will use 20% for the tax rate.
Cart::insert(array(
'id' => 'foo',
'name' => 'bar',
'price' => 100,
'quantity' => 1,
'tax' => 20
));
You can update items in your cart by updating any property on a cart item. For example, if you were within a cart loop then you can update a specific item using the below example.
foreach (Cart::contents() as $item) {
$item->name = 'Foo';
$item->quantity = 1;
}
You can remove any items in your cart by using the remove()
method on any cart item.
foreach (Cart::contents() as $item) {
$item->remove();
}
You can completely empty/destroy the cart by using the destroy()
method.
Cart::destroy()
You can loop the cart contents by using the following method
Cart::contents();
You can also return the cart items as an array by passing true as the first argument
Cart::contents(true);
Cart::totalItems();
By default this method will return all items in the cart as well as their quantities. You can pass true
as the first argument to get all unique items.
Cart::totalItems(true);
$cart->total();
By default the total()
method will return the total value of the cart as a float
, this will include
any item taxes. If you want to retrieve the cart total without tax then you can do so by passing false to the
total()
method
Cart::total(false);
Cart::has($itemIdentifier);
Cart::item($itemIdentifier);
There are several features of the cart items that may also help when integrating your cart.
You can retrieve the total value of a specific cart item (including quantities) using the following method.
$item->total();
By default, this method will return the total value of the item plus tax. So if you had a product which costs 100, with a quantity of 2 and a tax rate of 20% then the total returned by this method would be 240.
You can also get the total minus tax by passing false to the total()
method.
$item->total(false);
This would return 200.
You can check if a cart item has options by using the hasOptions()
method.
if ($item->hasOptions()) {
// We have options
}
$item->remove();
$item->toArray();