Storage List Bundle
The Storage List Bundle assists in managing lists and collections of objects, such as carts, wishlists, or compare lists, in CoreShop.
Installation Process
To install the Storage List Bundle, use Composer:
$ composer require coreshop/storage-list-bundle:^4.0
Usage
The bundle requires three models to function effectively:
- Storage List - Represents the collection. Implement
the
StorageListInterface
. - Storage Item - The item within the collection, which can store additional information, such as prices for a cart.
Implement
the
StorageListItemInterface
. - Storage Product - The actual product being stored inside the item. Implement
the
StorageListProductInterface
.
CoreShop provides basic implementations
of Storage List
and Storage Item
.
You will need to implement the StorageListProduct yourself.
Mutating Lists
Use
the Storage List Modifier
to create and persist lists.
Example: Basic Session-Based Wishlist
Let's create a session-based wishlist with the following components:
- Factory class for the Wishlist
- Factory class for the Wishlist Item
- StorageListManager (repository-like)
- StoreListModifier
CoreShop provides basic classes for these components:
use Symfony\Component\HttpFoundation\Session\Session;
use CoreShop\Component\StorageList\Model\StorageList;
use CoreShop\Component\StorageList\Model\StorageListItem;
use CoreShop\Component\Resource\Factory\Factory;
use CoreShop\Component\StorageList\SessionStorageManager;
use CoreShop\Component\StorageList\SessionStorageListModifier;
$session = new Session();
$session->start();
$wishlistFactory = new Factory(StorageList::class);
$wishlistItemFactory = new Factory(StorageListItem::class);
$wishlistManager = new SessionStorageManager($session, 'wishlist', $wishlistFactory);
$wishlistModifier = new SessionStorageListModifier($wishlistItemFactory, $wishlistManager);
// Adding data to our List
$list = $wishlistManager->getStorageList();
$product = $productRepository->find(1); // Assumes StorageListProductInterface implementation
$listItem = $wishlistItemFactory->createNew();
$listItem->setProduct($product);
$listItem->setQuantity($quantity);
// Adding a Product
$wishlistModifier->addToList($list, $listItem);
// Removing a Product
$wishlistModifier->removeFromList($list, $listItem);
This bundle simplifies the management of various storage lists within CoreShop, enhancing the functionality and user experience of your e-commerce platform.