<?php
namespace Plugin\ApexOrderFields;
use Eccube\Entity\Order;
use Eccube\Event\TemplateEvent;
use Plugin\ApexOrderFields\Repository\OrderFieldOrderRepository;
use Plugin\ApexOrderFields\Repository\OrderFieldRepository;
use Plugin\ApexOrderFields\Service\OrderFieldService;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Form\FormFactoryInterface;
class Event implements EventSubscriberInterface
{
public function __construct(
OrderFieldRepository $orderFieldRepository,
OrderFieldOrderRepository $orderFieldOrderRepository,
FormFactoryInterface $formFactory,
OrderFieldService $orderFieldService
){
$this->orderFieldRepository = $orderFieldRepository;
$this->orderFieldOrderRepository = $orderFieldOrderRepository;
$this->formFactory = $formFactory;
$this->orderFieldService = $orderFieldService;
}
/**
* @return array
*/
public static function getSubscribedEvents()
{
return [
'Shopping/index.twig' => 'index',
'Shopping/confirm.twig' => 'confirm',
'Mypage/history.twig' => 'onRenderMypageHistory',
'@admin/Order/edit.twig' => 'onRenderAdminOrderEdit',
];
}
/**
* @param TemplateEvent $event
*/
public function index(TemplateEvent $event)
{
$parameters = $event->getParameters();
/** @var Order $Order */
$Order = $parameters['Order'];
$orderFields = $this->orderFieldRepository->findBy(
['visible' => true],
['id' => 'ASC']
);
$OrderFieldOrderForms = [];
foreach ($orderFields as $i=>$OrderField){
$form = $this->orderFieldService->makeForm($Order, $OrderField);
$OrderFieldOrderForms[$OrderField->getId()] = $form->createView();
}
$parameters['OrderFieldOrderForms'] = $OrderFieldOrderForms;
$event->setParameters($parameters);
$event->addSnippet('@ApexOrderFields/default/shopping_index.twig');
}
/**
* @param TemplateEvent $event
*/
public function confirm(TemplateEvent $event)
{
$event->addSnippet('@ApexOrderFields/default/shopping_confirm.twig');
}
/**
* Hook point add coupon information to mypage history.
*
* @param TemplateEvent $event
*/
public function onRenderMypageHistory(TemplateEvent $event)
{
$event->addSnippet('@ApexOrderFields/default/mypage_history.twig');
}
/**
* @param TemplateEvent $event
*/
public function onRenderAdminOrderEdit(TemplateEvent $event)
{
// add twig
$event->addSnippet('@ApexOrderFields/admin/order_edit.twig');
}
}