From 09f547fb74d39ebeabd9eea9b667eac81f4d616c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20J=C4=99drzejewski?= Date: Fri, 2 Nov 2012 15:47:53 +0100 Subject: [PATCH] Simplify the removal of cart item, modify the ItemResolverInterface --- .../CartBundle/Controller/CartController.php | 19 ++++++++++++++++--- .../Resolver/ItemResolverInterface.php | 16 ++++------------ .../CartBundle/Resources/config/routing.yml | 2 +- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/Sylius/Bundle/CartBundle/Controller/CartController.php b/src/Sylius/Bundle/CartBundle/Controller/CartController.php index b21e2e8ca5..a14ec7b91c 100644 --- a/src/Sylius/Bundle/CartBundle/Controller/CartController.php +++ b/src/Sylius/Bundle/CartBundle/Controller/CartController.php @@ -50,7 +50,9 @@ class CartController extends ResourceController public function addItemAction(Request $request) { $cart = $this->getCurrentCart(); - $item = $this->getResolver()->resolveItemToAdd($request); + $emptyItem = $this->getCartItemManager()->create(); + + $item = $this->getResolver()->resolve($emptyItem, $request); if (!$item) { $this->setFlash('error', 'sylius_cart.flashes.add.error'); @@ -79,13 +81,14 @@ class CartController extends ResourceController * Removes item from cart. * * @param Request $request + * @param mixed $id * * @return Response */ - public function removeItemAction(Request $request) + public function removeItemAction(Request $request, $id) { $cart = $this->getCurrentCart(); - $item = $this->getResolver()->resolveItemToRemove($request); + $item = $this->getCartItemManager()->find($id); if (!$item || false === $cart->hasItem($item)) { $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. * diff --git a/src/Sylius/Bundle/CartBundle/Resolver/ItemResolverInterface.php b/src/Sylius/Bundle/CartBundle/Resolver/ItemResolverInterface.php index 4085ff23bf..85a03e328a 100644 --- a/src/Sylius/Bundle/CartBundle/Resolver/ItemResolverInterface.php +++ b/src/Sylius/Bundle/CartBundle/Resolver/ItemResolverInterface.php @@ -16,7 +16,6 @@ use Symfony\Component\HttpFoundation\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 */ @@ -24,19 +23,12 @@ interface ItemResolverInterface { /** * 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 */ - public function resolveItemToAdd(Request $request); - - /** - * Returns item to remove. - * - * @param Request $request - * - * @return CartItemInterface - */ - public function resolveItemToRemove(Request $request); + public function resolve(CartItemInterface $item, Request $request); } diff --git a/src/Sylius/Bundle/CartBundle/Resources/config/routing.yml b/src/Sylius/Bundle/CartBundle/Resources/config/routing.yml index cd80fc2f8e..7eac291347 100644 --- a/src/Sylius/Bundle/CartBundle/Resources/config/routing.yml +++ b/src/Sylius/Bundle/CartBundle/Resources/config/routing.yml @@ -18,5 +18,5 @@ sylius_cart_item_add: defaults: { _controller: sylius_cart.controller.cart:addItemAction } sylius_cart_item_remove: - pattern: /item/remove + pattern: /item/{id}/remove defaults: { _controller: sylius_cart.controller.cart:removeItemAction }