mirror of
https://github.com/Sylius/Sylius.git
synced 2026-07-05 20:57:12 +00:00
added placeAction to frontend order controller for simple checkouts.
This commit is contained in:
parent
ece72b0989
commit
f2c909cc64
4 changed files with 39 additions and 2 deletions
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 }
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue