バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 商品一覧で表示件数と並び順が動かない

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2017/9/25 20:11
対応状況: 解決済
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1644
商品一覧で表示件数と並び順が動かない
EC-CUBE3.0.14

商品一覧ページをカスタマイズしているうちに表示件数と並び順が動作しなくなりました。
選択して画面遷移しても、未選択の状態に戻ってしまいます。

クリーンインストールしたときのサイトとファイルや動作を比較していたところ、並び順を選択したときに遷移するURLのGETパラメーターが異なることがわかりました。

■変更前
/products/list?mode=&category_id=&name=&pageno=1&disp_number=8&orderby=2&owner_id=

■変更後
/products/list?name=

変更後のファイルをデバッグしてみたところ、確かに遷移後の $request に orderby が存在しないことを確認しました。
しかし、遷移前に GET パラメーターを設定している仕組みがわからず調査が行き詰まっています。

どうすれば GET パラメーターに orderby を指定できるのでしょうか?

app/template/default/Product/list.twig

{% block javascript %}
    <script>
        // 並び順を変更
        function fnChangeOrderBy(orderby) {    // ★この関数が呼ばれていることを確認
            eccube.setValue('orderby', orderby);
            eccube.setValue('pageno', 1);
            eccube.submitForm();
        }
        // 表示件数を変更
        function fnChangeDispNumber(dispNumber) {
            eccube.setValue('disp_number', dispNumber);
            eccube.setValue('pageno', 1);
            eccube.submitForm();
        }
    </script>
{% endblock %}

...

          <form name="page_navi_top" id="page_navi_top" action="?">
            {% if pagination.totalItemCount > 0 %}
              <p>{{ pagination.totalItemCount }}件の商品が見つかりました。</p>
              <div class="cat_result_nav">
                {{ form_widget(disp_number_form, {'id': '', 'attr': {'onchange': "java script:fnChangeDispNumber(this.value);"}}) }}
                {{ form_widget(order_by_form, {'id': '', 'attr': {'onchange': "java script:fnChangeOrderBy(this.value);"}}) }}
              </div>
            {% else %}
              <p>お探しの商品は見つかりませんでした。</p>
            {% endif %}
          </form>


src/Eccube/Controller/ProductController.php

    public function index(Application $app, Request $request)
    {
        $BaseInfo = $app['eccube.repository.base_info']->get();

        // Doctrine SQLFilter
        if ($BaseInfo->getNostockHidden() === Constant::ENABLED) {
            $app['orm.em']->getFilters()->enable('nostock_hidden');
        }

        // handleRequestは空のqueryの場合は無視するため
        if ($request->getMethod() === 'GET') {
            $request->query->set('pageno', $request->query->get('pageno', ''));
        }

        // searchForm
        /* @var $builder \Symfony\Component\Form\FormBuilderInterface */
        $builder = $app['form.factory']->createNamedBuilder('', 'search_product');
        $builder->setAttribute('freeze', true);
        $builder->setAttribute('freeze_display_text', false);
        if ($request->getMethod() === 'GET') {
            $builder->setMethod('GET');
        }

        /* @var $searchForm \Symfony\Component\Form\FormInterface */
        $searchForm = $builder->getForm();

        $searchForm->handleRequest($request);    // ★$request 内の orderby の値が空であることを確認

        // paginator
        $searchData = $searchForm->getData();
        $qb = $app['eccube.repository.product']->getQueryBuilderBySearchData($searchData);

        ...


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

h_tanaka
投稿日時: 2017/9/25 21:05
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1644
Re: 商品一覧で表示件数と並び順が動かない
自己解決しました。

app/template/default/Product/list.twig 内に次のフォームを追加することで正しく動作するようになりました。
hidden 要素が必要だったようです。


    <form name="form1" id="form1" method="get" action="?">
        {{ form_widget(search_form) }}
    </form>


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

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


 



ログイン


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

統計情報

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

投稿数ランキング

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