added placeAction to frontend order controller for simple checkouts.

This commit is contained in:
Paweł Jędrzejewski 2011-10-31 21:30:05 +01:00
parent ece72b0989
commit f2c909cc64
4 changed files with 39 additions and 2 deletions

View file

@ -23,6 +23,38 @@ use Sylius\Bundle\SalesBundle\EventDispatcher\Event\FilterOrderEvent;
*/
class OrderController extends ContainerAware
{
/**
* Places order.
*/
public function placeAction()
{
$request = $this->container->get('request');
$order = $this->container->get('sylius_sales.manager.order')->createOrder();
$form = $this->container->get('form.factory')->create($this->container->get('sylius_sales.form.type.order'));
$form->setData($order);
if ('POST' == $request->getMethod()) {
$form->bindRequest($request);
if ($form->isValid()) {
$this->container->get('event_dispatcher')->dispatch(SyliusSalesEvents::ORDER_PROCESS, new FilterOrderEvent($order));
$this->container->get('sylius_sales.processor')->process($order);
$this->container->get('event_dispatcher')->dispatch(SyliusSalesEvents::ORDER_PLACE, new FilterOrderEvent($order));
$this->container->get('sylius_sales.manipulator.order')->create($order);
return $this->container->get('templating')->renderResponse('SyliusSalesBundle:Frontend/Order:placed.html.' . $this->getEngine(), array(
'order' => $order
));
}
}
return $this->container->get('templating')->renderResponse('SyliusSalesBundle:Frontend/Order:place.html.' . $this->getEngine(), array(
'form' => $form->createView()
));
}
/**
* Confirms order.
*/

View file

@ -24,6 +24,7 @@ final class SyliusSalesEvents
const ORDER_CLOSE = 'sylius_sales.event.order.close';
const ORDER_OPEN = 'sylius_sales.event.order.close';
const ORDER_CONFIRM = 'sylius_sales.event.order.confirm';
const ORDER_PROCESS = 'sylius_sales.event.order.process';
const ORDER_PLACE = 'sylius_sales.event.order.place';
const ORDER_STATUS = 'sylius_sales.event.order.status';
}

View file

@ -33,7 +33,7 @@ class Processor
*
* @param OrderInterface $order
*/
public function processOrder(OrderInterface $order)
public function process(OrderInterface $order)
{
foreach ($this->operations as $operation) {
$operation->process($order);
@ -60,4 +60,4 @@ class Processor
public function unregisterOperation(OperationInterface $operation)
{
}
}
}

View file

@ -1,3 +1,7 @@
sylius_sales_order_place:
pattern: /place
defaults: { _controller: sylius_sales.controller.frontend.order:placeAction }
sylius_sales_order_confirm:
pattern: /confirm/{token}
defaults: { _controller: sylius_sales.controller.frontend.order:confirmAction }