app/Plugin/PiaManageRenovation/EventSubscriber/AdminHeaderEventSubscriber.php line 17

Open in your IDE?
  1. <?php
  2. namespace Plugin\PiaManageRenovation\EventSubscriber;
  3. use Eccube\Event\TemplateEvent;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. class AdminHeaderEventSubscriber implements EventSubscriberInterface
  6. {
  7.     public static function getSubscribedEvents()
  8.     {
  9.         return [
  10.             '@admin/default_frame.twig' => 'onAdminDefaultFrame',
  11.         ];
  12.     }
  13.     public function onAdminDefaultFrame(TemplateEvent $event)
  14.     {
  15.         // ヘッダー検索テンプレートを読み込み
  16.         $searchTemplate file_get_contents(__DIR__ '/../Resource/template/admin/header_search.twig');
  17.         // JavaScriptを直接埋め込み
  18.         $js file_get_contents(__DIR__ '/../Resource/assets/js/header_search.js');
  19.         $assets = <<<EOT
  20. <script>
  21. {$js}
  22. </script>
  23. EOT;
  24.         // アセットをheadタグ内に挿入
  25.         $source $event->getSource();
  26.         $source str_replace('</head>'$assets "\n</head>"$source);
  27.         // 検索フォームをショップタイトルリンクの後に挿入
  28.         $pattern '/(<a class="c-headerBar__shopTitle"[^>]*>.*?<\/a>)/s';
  29.         $replacement '$1' "\n" $searchTemplate;
  30.         $source preg_replace($pattern$replacement$source);
  31.         $event->setSource($source);
  32.     }
  33. }