バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > FormTypeの値を表示前に変更したい

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2017/12/19 13:52
対応状況: 解決済
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1638
FormTypeの値を表示前に変更したい
EC-CUBE3.0.15

管理画面の受注登録ページの商品検索モーダルにおいて、選択できるカテゴリーをあらかじめ特定のカテゴリーに絞り込んでおくという処理を入れたいと考えています。

試しに以下のようにコーディングしてみたところ、処理自体は走っているですが、カテゴリープルダウンの中身は変わりませんでした。
どうすればうまくいくでしょうか?

src/Eccube/Form/Type/Admin/SearchProductType.php

            ->addEventListener(FormEvents::POST_SET_DATA, function ($event) use($app) {
                $form = $event->getForm();

                $Categories = $this->app['eccube.repository.category']->findAll();

                $category_ids = new \Doctrine\Common\Collections\ArrayCollection();
                foreach ($Categories as $Category) {
                    $Path = $Category->getPath();
                    foreach ($Path as $Cat) {
                        if ($Cat->getId() == 4) {   // 特定カテゴリー配下のカテゴリーのみ
                            $category_ids->add($Category);
                            break;
                        }
                    }
                }

                $form['category_id']->setData($category_ids);
            })


また、この処理の中で、"受注登録画面のときのみ" という条件をつけるにはどうすればよいでしょうか?


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

h_tanaka
投稿日時: 2017/12/19 16:32
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1638
Re: FormTypeの値を表示前に変更したい
別の方法でうまくいきました。

src/Eccube/Form/Type/Admin/SearchProductType.php


    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $app = $this->app;

        /**
         * @var ArrayCollection $arrCategory array of category
         */
        $Parent = $this->app['eccube.repository.category']->find(4);    // 特定カテゴリー配下のカテゴリーのみ
        $arrCategory = $this->app['eccube.repository.category']->getList($Parent, true);

        $builder

            ---(中略)---

            ->add('category_id', 'category', array(
                'label' => 'カテゴリ',
                'empty_value' => '選択してください',
                'required' => false,
                'choices' => $arrCategory,    // カテゴリーを設定
            ))


あとは、"受注登録画面のときのみ" という条件をつける方法がわかればよいのですが・・・。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

minori
投稿日時: 2017/12/19 17:27
対応状況: −−−
常連
登録日: 2017/10/12
居住地:
投稿: 40
Re: FormTypeの値を表示前に変更したい
リクエストされたルーティング名が
$request->get('_route')で取得出来るので、
受注登録画面のルーティング名と比較してみては
いかがでしょうか?
h_tanaka
投稿日時: 2017/12/19 17:32
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1638
Re: FormTypeの値を表示前に変更したい
minori さん
ご返信ありがとうございます。

Controllerでルーティング名を取得することはできると思うのですが・・。
FormType内でルーティング名を取得する、またはルーティング名をControllerからFormTypeに渡す方法がわかりません。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

minori
投稿日時: 2017/12/19 17:49
対応状況: −−−
常連
登録日: 2017/10/12
居住地:
投稿: 40
Re: FormTypeの値を表示前に変更したい
$appからRequestクラスが取得できるので、
FormTypeでもControllerと同じ要領で
取得できると思います。

$this->app['request']->get('_route')
h_tanaka
投稿日時: 2017/12/19 17:55
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1638
Re: FormTypeの値を表示前に変更したい
minoriさん

なるほど!
解決しました。
ありがとうございます!


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

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


 



ログイン


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

統計情報

総メンバー数は88,724名です
総投稿数は109,953件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1286
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.