mirror of
https://github.com/Sylius/Sylius.git
synced 2026-07-14 09:02:12 +00:00
Simplify the removal of cart item, modify the ItemResolverInterface
This commit is contained in:
parent
557e8a1249
commit
09f547fb74
3 changed files with 21 additions and 16 deletions
|
|
@ -50,7 +50,9 @@ class CartController extends ResourceController
|
||||||
public function addItemAction(Request $request)
|
public function addItemAction(Request $request)
|
||||||
{
|
{
|
||||||
$cart = $this->getCurrentCart();
|
$cart = $this->getCurrentCart();
|
||||||
$item = $this->getResolver()->resolveItemToAdd($request);
|
$emptyItem = $this->getCartItemManager()->create();
|
||||||
|
|
||||||
|
$item = $this->getResolver()->resolve($emptyItem, $request);
|
||||||
|
|
||||||
if (!$item) {
|
if (!$item) {
|
||||||
$this->setFlash('error', 'sylius_cart.flashes.add.error');
|
$this->setFlash('error', 'sylius_cart.flashes.add.error');
|
||||||
|
|
@ -79,13 +81,14 @@ class CartController extends ResourceController
|
||||||
* Removes item from cart.
|
* Removes item from cart.
|
||||||
*
|
*
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
|
* @param mixed $id
|
||||||
*
|
*
|
||||||
* @return Response
|
* @return Response
|
||||||
*/
|
*/
|
||||||
public function removeItemAction(Request $request)
|
public function removeItemAction(Request $request, $id)
|
||||||
{
|
{
|
||||||
$cart = $this->getCurrentCart();
|
$cart = $this->getCurrentCart();
|
||||||
$item = $this->getResolver()->resolveItemToRemove($request);
|
$item = $this->getCartItemManager()->find($id);
|
||||||
|
|
||||||
if (!$item || false === $cart->hasItem($item)) {
|
if (!$item || false === $cart->hasItem($item)) {
|
||||||
$this->setFlash('error', 'sylius_cart.flashes.remove.error');
|
$this->setFlash('error', 'sylius_cart.flashes.remove.error');
|
||||||
|
|
@ -187,6 +190,16 @@ class CartController extends ResourceController
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get cart item manager.
|
||||||
|
*
|
||||||
|
* @return ResourceManagerInterface
|
||||||
|
*/
|
||||||
|
protected function getCartItemManager()
|
||||||
|
{
|
||||||
|
return $this->get('sylius_cart.manager.item');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get cart provider.
|
* Get cart provider.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ use Symfony\Component\HttpFoundation\Request;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resolver returns cart item that needs to be added based on request.
|
* Resolver returns cart item that needs to be added based on request.
|
||||||
* Should be called only when adding/removing items.
|
|
||||||
*
|
*
|
||||||
* @author Paweł Jędrzejewski <pjedrzejewski@diweb.pl>
|
* @author Paweł Jędrzejewski <pjedrzejewski@diweb.pl>
|
||||||
*/
|
*/
|
||||||
|
|
@ -24,19 +23,12 @@ interface ItemResolverInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Returns item to add.
|
* Returns item to add.
|
||||||
|
* It takes empty and clean item object as first argument.
|
||||||
*
|
*
|
||||||
* @param Request $request
|
* @param CartItemInterface $item
|
||||||
|
* @param Request $request
|
||||||
*
|
*
|
||||||
* @return CartItemInterface
|
* @return CartItemInterface
|
||||||
*/
|
*/
|
||||||
public function resolveItemToAdd(Request $request);
|
public function resolve(CartItemInterface $item, Request $request);
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns item to remove.
|
|
||||||
*
|
|
||||||
* @param Request $request
|
|
||||||
*
|
|
||||||
* @return CartItemInterface
|
|
||||||
*/
|
|
||||||
public function resolveItemToRemove(Request $request);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,5 +18,5 @@ sylius_cart_item_add:
|
||||||
defaults: { _controller: sylius_cart.controller.cart:addItemAction }
|
defaults: { _controller: sylius_cart.controller.cart:addItemAction }
|
||||||
|
|
||||||
sylius_cart_item_remove:
|
sylius_cart_item_remove:
|
||||||
pattern: /item/remove
|
pattern: /item/{id}/remove
|
||||||
defaults: { _controller: sylius_cart.controller.cart:removeItemAction }
|
defaults: { _controller: sylius_cart.controller.cart:removeItemAction }
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue