app/Plugin/ApgSelectBoxForAddingToCart42/Event.php line 43

Open in your IDE?
  1. <?php
  2. namespace Plugin\ApgSelectBoxForAddingToCart42;
  3. use Eccube\Event\TemplateEvent;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Twig\Environment;
  6. class Event implements EventSubscriberInterface
  7. {
  8.     const TEMPLATE_NAMESPACE '@ApgSelectBoxForAddingToCart42';
  9.     /**
  10.      * @var Environment
  11.      */
  12.     protected $twig;
  13.     public function __construct(
  14.         \Twig\Environment $twig
  15.     )
  16.     {
  17.         $this->twig $twig;
  18.     }
  19.     /**
  20.      * @return array
  21.      */
  22.     public static function getSubscribedEvents()
  23.     {
  24.         return [
  25.             '@admin/Product/product_class.twig' => 'onRenderAdminProductProductClass',
  26.         ];
  27.     }
  28.     /**
  29.      * [Admin]商品規格ページ表示
  30.      * @param TemplateEvent $event
  31.      * @return void
  32.      * @throws \Twig\Error\LoaderError
  33.      */
  34.     public function onRenderAdminProductProductClass(TemplateEvent $event)
  35.     {
  36.         $source $event->getSource();
  37.         // data
  38.         $parameters $event->getParameters();
  39.         // copy js
  40.         $pattern '|\$\(\'select\[id\$=_sale_type\]\'\)\.val\(sale_type\);|s';
  41.         $addRow $this->twig->getLoader()->getSourceContext(self::TEMPLATE_NAMESPACE '/admin/product_class_copy_js.twig')->getCode();
  42.         if (preg_match($pattern$source$matchesPREG_OFFSET_CAPTURE)) {
  43.             $replacement $matches[0][0] . $addRow;
  44.             $source preg_replace($pattern$replacement$source);
  45.         }
  46.         $event->setSource($source);
  47.         $event->setParameters($parameters);
  48.     }
  49. }