Simplify the removal of cart item, modify the ItemResolverInterface

This commit is contained in:
Paweł Jędrzejewski 2012-11-02 15:47:53 +01:00
parent 557e8a1249
commit 09f547fb74
3 changed files with 21 additions and 16 deletions

View file

@ -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.
*

View file

@ -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 <pjedrzejewski@diweb.pl>
*/
@ -24,19 +23,12 @@ interface ItemResolverInterface
{
/**
* Returns item to add.
* It takes empty and clean item object as first argument.
*
* @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);
}

View file

@ -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 }