バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > その他 > 並び順の項目をあるカテゴリの時だけ変更したい

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
rmaki
投稿日時: 2022/10/16 22:19
対応状況: −−−
常連
登録日: 2018/5/17
居住地:
投稿: 32
並び順の項目をあるカテゴリの時だけ変更したい
▼テンプレート
[EC-CUBE] 3.0.16
[PHP] 7系
[導入プラグインの有無] Recomend
[カスタマイズの有無]
[現象]
あるカテゴリの商品一覧ページで、並び順と指定できる項目を減らしたいと考えています。(カテゴリ毎に出し分けしたい)
現状、mtb_product_list_order_byには、以下の項目が入っています。
新着順、価格順、おすすめ順
特定カテゴリの際だけ、価格順を非表示にしたいです。

ProductController.php
の中でカテゴリによって出し分けしたいのですが
以下の部分をどうにかしたら可能なのでしょうか?

--------------
// ソート順
$builder = $app['form.factory']->createNamedBuilder('orderby', 'product_list_order_by', null, array(
'empty_data' => null,
'required' => false,
'label' => '表示順',
'allow_extra_fields' => true,
));
if ($request->getMethod() === 'GET') {
$builder->setMethod('GET');
}

$event = new EventArgs(
array(
'builder' => $builder,
),
$request
);
$app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_PRODUCT_INDEX_ORDER, $event);

$orderByForm = $builder->getForm();

$orderByForm->handleRequest($request);
------------


おそらくEC-CUBEというかSymfonyの問題だと思うのですが、ご教授いただけたら助かります。
nanasess
投稿日時: 2022/10/17 10:53
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2272
Re: 並び順の項目をあるカテゴリの時だけ変更したい
FormType のオプションで、

'query_builder' => function (EntityRepository $er) {
        $qb = $er->createQueryBuilder('u');
        if (条件) {
            $qb->addWhere('u.id <> 1');
        }
        return $qb;
            
},

のような感じで条件に応じて addWhere を追加してみるのはいかがでしょうか?
rmaki
投稿日時: 2022/10/22 1:26
対応状況: −−−
常連
登録日: 2018/5/17
居住地:
投稿: 32
Re: 並び順の項目をあるカテゴリの時だけ変更したい
返信おそくなりすみません。
ご回答ありがとうございます。

ご提示頂いた通り、以下のようにして実現できました。


        // ソート順
        $builder = $app['form.factory']->createNamedBuilder('orderby', 'product_list_order_by', null, array(
            'empty_data' => null,
            'required' => false,
            'label' => '表示順',
            'allow_extra_fields' => true,
            'query_builder' => function (EntityRepository $er) {
                $qb = $er->createQueryBuilder('u');
                // XXXXXXかどうか
                if($this->isXXXXXX) {
                    $qb->where('u.id not in (1, 3)');
                }
                return $qb;
            },
        ));


ありがとうございました!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン



統計情報

総メンバー数は76,761名です
総投稿数は105,200件です

投稿数ランキング

1
seasoft
7333
2
468
3217
3
AMUAMU
2712
4
nanasess
2272
5
umebius
2085
6
yuh
1669
7
red
1556
8
h_tanaka
1195
9
tsuji
942
10
fukap
907
11
shutta
835
12
tao_s
794
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

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