complete cart controller

This commit is contained in:
Manuel Raynaud
2013-08-13 10:40:04 +02:00
parent b9bc56a748
commit a9ecf01216
4 changed files with 31 additions and 5 deletions

View File

@@ -15,10 +15,10 @@
</route>
<route id="cart.add.process" path="/cart/add" methods="post">
<default key="_controller">Thelia\Controller\Front\CartController::addArticle</default>
<default key="_controller">Thelia\Controller\Front\CartController::changeArticle</default>
</route>
<route id="cart.change.process" path="/cart/change" methods="post">
<default key="_controller">Thelia\Controller\Front\CartController::addArticle</default>
<route id="cart.change.process" path="/cart/delete" methods="post">
<default key="_controller">Thelia\Controller\Front\CartController::deleteArticle</default>
</route>
</routes>

View File

@@ -24,7 +24,11 @@ namespace Thelia\Controller\Front;
use Thelia\Controller\BaseController;
use Thelia\Tools\Redirect;
class BaseFrontController extends BaseController {
public function redirect($url) {
Redirect::exec($url);
}
}

View File

@@ -35,13 +35,26 @@ class CartController extends BaseFrontController
$cartEvent = $this->getCartEvent();
$this->dispatch(TheliaEvents::CART_ADDITEM, $cartEvent);
$this->redirectInternal();
}
public function modifyArticle()
{
$cartEvent = $this->getCartEvent();
$this->dispatch(TheliaEvents::CART_CHANGEARTICLE, $cartEvent);
$this->dispatch(TheliaEvents::CART_CHANGEITEM, $cartEvent);
$this->redirectInternal();
}
public function deleteArticle()
{
$cartEvent = $this->getCartEvent();
$this->dispatch(TheliaEvents::CART_DELETEITEM, $cartEvent);
$this->redirectInternal();
}
protected function getCartEvent()
@@ -51,4 +64,11 @@ class CartController extends BaseFrontController
return new CartEvent($request, $cart);
}
protected function redirectInternal()
{
if (null !== $url = $this->getRequest()->get("success_url")) {
$this->redirect($url);
}
}
}

View File

@@ -136,5 +136,7 @@ final class TheliaEvents
/**
* sent on modify article action
*/
const CART_CHANGEARTICLE = "action.changeArticle";
const CART_CHANGEITEM = "action.changeArticle";
const CART_DELETEITEM = "action.deleteArticle";
}