<?php
namespace Plugin\ShelvingOption4;
use Eccube\Event\EventArgs;
use Eccube\Event\TemplateEvent;
use Plugin\ShelvingOption4\Form\Type\ShelvingOptionType;
use Plugin\ShelvingOption4\Repository\ShelvingOptionConfigRepository;
use Plugin\ShelvingOption4\Repository\ShelvingOptionCartItemRepository;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Form\FormFactoryInterface;
class ShelvingOptionEvent implements EventSubscriberInterface
{
/** @var ShelvingOptionConfigRepository $ShelvingOptionConfigRepository */
protected $ShelvingOptionConfigRepository;
/** @var ShelvingOptionCartItemRepository $ShelvingOptionCartItemRepository */
protected $ShelvingOptionCartItemRepository;
/** @var FormFactoryInterface $formFactory */
protected $formFactory;
public function __construct(
FormFactoryInterface $formFactory,
ShelvingOptionConfigRepository $ShelvingOptionConfigRepository,
ShelvingOptionCartItemRepository $ShelvingOptionCartItemRepository
) {
$this->formFactory = $formFactory;
$this->ShelvingOptionConfigRepository = $ShelvingOptionConfigRepository;
$this->ShelvingOptionCartItemRepository = $ShelvingOptionCartItemRepository;
}
/**
* @return array
*/
public static function getSubscribedEvents()
{
// NOTE: 配列のキーはイベント名、値は呼び出すメソッド名
return [
'Product/detail.twig' => 'onDetail',
];
}
public function onDetail(TemplateEvent $event)
{
/*##DEL
// NOTE: @は多分プラグインルートっていう意味かもしれない
$twig = '@ShelvingOption4/default/Product/shelving_option.twig';
// NOTE: addSnippet()関数で指定したテンプレートを<body>タグの下部に追加できる
$event->addSnippet($twig);
*/
/** @var \ECCube\Entity\Product */
$Product = $event->getParameter('Product');
$ShelvingOption = $Product->getShelvingOption();
$event->setParameter('ShelvingOption', $ShelvingOption ? $ShelvingOption->toJson() : 'null');
}
}