バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

デザインテンプレート EC-CUBE3.0版が登場!
広告掲載について

サイト内検索

プラグイン > 開発について > 拡張フォームを特定のページにだけ反映させたい

開発について

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2017/6/19 15:30
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 350
拡張フォームを特定のページにだけ反映させたい
EC-CUBE 3.0.14

管理画面の会員検索ページに項目を追加するために、admin_search_customer のFormTypeを拡張しました。

app/Plugin/Test/Form/Extension/Admin/SearchCustomerTypeExtension.php

class SearchCustomerTypeExtension extends AbstractTypeExtension
{
    public $app;

    public function __construct($app)
    {
        $this->app = $app;
    }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $app = $this->app;
        if (!$app->isGranted('ROLE_ADMIN')) {
            return;
        }

        // フォームを追加するためにイベントリスナーを追加
       $builder->addEventListener(FormEvents::POST_SET_DATA, function (FormEvent $event) use ($app) {

            $choices = array();

            $form->add('plg_test_id', 'choice', array(
                'label' => 'テスト',
                'mapped' => true,
                'required' => false,
                'choices' => $choices,
                'empty_value' => '選択してください',
            ));
       });
    }

    public function getExtendedType()
    {
        return 'admin_search_customer';
    }
}


するとこのFormTypeを使用している他のページ(受注登録の会員検索など)にも拡張項目が表示されてしまいました。

拡張フォームを特定のページにだけ反映させることは可能でしょうか?
nyorai
投稿日時: 2017/6/20 11:01
対応状況: −−−
長老
登録日: 2015/8/21
居住地:
投稿: 158
Re: 拡張フォームを特定のページにだけ反映させたい
FormExtensionだと、admin_search_customer自体が書き換わるので、全体に影響しちゃいますね。

「admin.customer.index.initialize」のフックポイントを使って実装すれば、影響箇所は限定できるかと思います。
引数としてSearchCustomerTypeのbuilderが渡ってくるので、そこで項目を追加すれば良いかと思います。


    public function onAdminCustomerIndexInit(EventArgs $event)
    {
        $builder = $event->getArgument('builder');
        $builder->add('plg_xxx'
            ...
            
        );
    }
h_tanaka
投稿日時: 2017/6/20 11:18
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 350
Re: 拡張フォームを特定のページにだけ反映させたい
nyoraiさん

ご指定の方法で見事に解決しました!
ありがとうございます♪


----------------
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

クレジットカード情報の非保持化対応

統計情報

総メンバー数は20,844名です
総投稿数は83,838件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1664
4
yuh
1440
5
red
1082
6
fukap
907
7
shutta
827
8
468
817
9 ramrun 789
10
tsuji
784
11
umebius
777
12
tao_s
651
13 karin 641
14 sumida 638
15
homan
633
16 DELIGHT 571
17
patapata
502
18
flealog
483
19 tonton 436
20
ecbg
387


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.