バージョン選択

フォーラム

メニュー

オンライン状況

66 人のユーザが現在オンラインです。 (59 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 66
もっと...

サイト内検索

質問 > 管理機能 > 【EC-CUBE4.0.3】独自プラグインで既存ページ(新着情報管理ページ)に検索機能を設けたい

管理機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
ゲスト
投稿日時: 2020/1/28 16:14
対応状況: −−−
Re: 【EC-CUBE4.0.3】独自プラグインで既存ページ(新着情報管理ページ)に検索機能を設けたい
umebius様

お世話になっております。追加で質問させてください。

■質問の概要
・EventクラスでRequestを受け取る方法は?
・Eventクラス内で既存ページに対して新規のフォームを生成する方法は?
・Eventクラス内で新規でQueryBuilderを操作する方法は?

■詳細
新着情報管理ページに新たに検索フォームを生成するには、以下の手順を行えばよいと認識しています。
①EccubeEvents::ADMIN_CONTENT_NEWS_INDEX_INITIALIZEイベントをフックする。
②生成したいFormとクエリの結果をsearch.twig(自分で作ったtwigファイル)に渡す。
③TemplateEventのaddSnippet()メソッドでnews.twig(新着情報管理ページ。EC-CUBE本体のファイル。)の</body>タグ直前に追加し、JQueryで位置を調整する。

それをもとに途中まで書いたEventクラスのコードが次のものです。
引用:

<?php

namespace Plugin\Sample;

use Eccube\Controller\AbstractController;
use Eccube\Event\TemplateEvent;
use Eccube\Repository\Master\PageMaxRepository;
use Eccube\Repository\NewsRepository;
use Knp\Component\Pager\PaginatorInterface;
use Plugin\MSEC_Client\Form\Type\Admin\Content\News\SearchNewsType;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class NewsEvent extends AbstractController implements EventSubscriberInterface
{
  /**
  * @var NewsRepository
  */
  private $newsRepository;

 /**
  * @var PageMaxRepository
  */
 private $pageMaxRepository;

 /**
  * @var PaginatorInterface
  */
 private $paginator;

public function __construct(NewsRepository $newsRepository, PageMaxRepository $pageMaxRepository, PaginatorInterface $paginator)
{
  $this->newsRepository = $newsRepository;
  $this->pageMaxRepository = $pageMaxRepository;
  $this->paginator = $paginator;
}

/**
* @return array
*/
public static function getSubscribedEvents(): array
{
  return [
    '@admin/Content/news.twig' => 'search',
   ];
}

public function search(TemplateEvent $event)
{
   $searchForm = $this->createForm(SearchNewsType::class);

   $twig = '@Sample/admin/Content/News/search.twig';
   $event->addSnippet($twig);
}
}

検索フォームを生成するcreateForm()メソッドを呼ぶため、EventクラスにAbstractControllerクラスを継承させる必要がある、と考えました。
しかし、AbstractControllerクラスを継承させると次のようなエラー出て実行できません。

引用:

Cannot autowire service "Eccube\Event\TemplateEvent": argument "$view" of method "__construct()" has no type-hint, you should configure its value explicitly.


エラーについてはネットで調べたのですが、ヒントになりそうな内容は見つけられませんでした。
Eventクラス内でリクエストを取得し、既存ページに新規フォームを生成し、クエリを新たに発行するにはどうすればよいでしょうか。

やはり、ルーティングを上書きしてまったく新しいページとして開発するほうがよいのでしょうか・・・。
フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
   【EC-CUBE4.0.3】独自プラグインで既存ページ(新着情報管理ページ)に検索機能を設けたい ゲスト 2020/1/27 18:03
     Re: 【EC-CUBE4.0.3】独自プラグインで既存ページ(新着情報管理ページ)に検索機能を設けたい umebius 2020/1/27 18:09
       Re: 【EC-CUBE4.0.3】独自プラグインで既存ページ(新着情報管理ページ)に検索機能を設けたい ゲスト 2020/1/27 18:50
         Re: 【EC-CUBE4.0.3】独自プラグインで既存ページ(新着情報管理ページ)に検索機能を設けたい ゲスト 2020/1/27 18:58
         Re: 【EC-CUBE4.0.3】独自プラグインで既存ページ(新着情報管理ページ)に検索機能を設けたい umebius 2020/1/27 19:01
           Re: 【EC-CUBE4.0.3】独自プラグインで既存ページ(新着情報管理ページ)に検索機能を設けたい ゲスト 2020/1/27 19:10
           » Re: 【EC-CUBE4.0.3】独自プラグインで既存ページ(新着情報管理ページ)に検索機能を設けたい ゲスト 2020/1/28 16:14
               Re: 【EC-CUBE4.0.3】独自プラグインで既存ページ(新着情報管理ページ)に検索機能を設けたい umebius 2020/1/28 17:20
                 Re: 【EC-CUBE4.0.3】独自プラグインで既存ページ(新着情報管理ページ)に検索機能を設けたい ゲスト 2020/1/28 19:00
     Re: 【EC-CUBE4.0.3】独自プラグインで既存ページ(新着情報管理ページ)に検索機能を設けたい seo368 2020/1/27 19:32

 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,032名です
総投稿数は110,020件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.