バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 【検索方法カスタマイズ】フォーム入力 FormType 変更 空白

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
erukun
投稿日時: 2022/4/22 13:17
対応状況: −−−
一人前
登録日: 2021/2/22
居住地: 国内
投稿: 93
【検索方法カスタマイズ】フォーム入力 FormType 変更 空白
[EC-CUBE] EC-CUBE 4.0.6-p1 正式版(公式DL版)
[レンタルサーバ] GMO Conohawingサーバ
[OS] Linux web0168.sh.tyo1 3.10.0-962.3.2.lve1.5.39.el7.x86_64 #1 SMP Thu Sep 17 06:10:33 EDT 2020 x86_64
[PHP] PHP 7.4.25
[データベース] MySQL 5.7.27-log
[WEBサーバ] Apache + nginx (バージョン確認方法が分かりません)
[ブラウザ] 有名どころ全て
[導入プラグインの有無] 有り

Amazon Payプラグイン(V2対応版) 1.1.0 AmazonPayV2 状態: 有効

クール便・冷凍便対応プラグイン 1.0.4 DeliveryCool4 状態: 有効

メールマガジンプラグイン 4.0.2 MailMagazine4 状態: 有効

お問い合わせ管理 for EC-CUBE4 1.0.5 ContactManagement4 状態: 有効

Coupon Plugin for EC-CUBE4 4.0.7 Coupon4 状態: 有効

Paidyプラグイン 1.0.5 Paidy4 状態: 有効

Securitychecker4 4.0.0 Securitychecker4 状態: 有効

商品レビュー管理プラグイン 4.0.2

売上集計プラグイン 4.0.1 状態: 有効

クロネコヤマト カード・後払い一体型決済サービス 1.2.1
YamatoPayment4  状態: 有効

EC-CUBE Ranking Plugin 1.0.1 Ranking 状態: 有効







実現したいことは、商品の検索方法(フォーム入力)の変更です。
標準の商品検索ブロックのフォーム入力は(SearchProductBlockType.php)で制限できますが、
『全ての商品』のときは、1文字以上文字入力しないと検索できず(空白も禁止)、他の『親や孫カテゴリ』選択時には、0文字から検索できるようにしたいです。




SearchProductBlockType.php 38行目付近

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $Categories = $this->categoryRepository
            ->getList(null, true);

        $builder->add('category_id', EntityType::class, [
            'class' => 'Eccube\Entity\Category',
            'choice_label' => 'NameWithLevel',
            'choices' => $Categories,
            'placeholder' => 'common.select__all_products',
            'required' => false,
        ]);
        $builder->add('name', SearchType::class, [
            'required' => true,
            'label' => 'common.search_keyword',
            'attr' => [
		'minlength' => 1,
                'maxlength' => 50,
            ],
        ]);
    }


現在上のように手を加えています。
『全ての商品』選択時に空白文字列でも検索できるのが悩みです。また『親カテゴリ』や『孫カテゴリ』選択時に文字入力をしないといけず困っています。


若しくは、カテゴリを取得せず『全ての商品』だけ検索する方法でも構いません。

お忙しいところ恐縮ですが何かしらヒントをいただけますと幸いです。どうぞよろしくお願いいたします。








468
投稿日時: 2022/4/23 8:02
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 【検索方法カスタマイズ】フォーム入力 FormType 変更 空白
/src/Eccube/Form/Type/Admin/ProductClassEditType.phpの中で
チェックが付いている時だけバリデーション(入力値チェック)を行うという処理が書かれていますので参考になるのではないでしょうか?
$builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) { ... }
を使って、カテゴリが未選択時は空白文字(未入力)をエラーとする処理を記述する形になるのではないかと思います。

ただ、商品検索フォームはブロックなのでエラー時にどのような動きをするのかは想像がつきません。
(エラー発生時に元のページに戻るのかどうか?)

/src/Eccube/Controller/ProductController.php側に判定処理を入れて、NGとなる条件で検索が処理された場合、
検索結果($pagination)が0件になるような処理とメッセージ(1文字以上入力してくださいといった説明)を表示させる形もあるのではないかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

erukun
投稿日時: 2022/4/29 8:39
対応状況: 保留
一人前
登録日: 2021/2/22
居住地: 国内
投稿: 93
Re: 【検索方法カスタマイズ】フォーム入力 FormType 変更 空白
お忙しいところご回答いただきありがとうございます。
ちょっと確認します。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン



統計情報

総メンバー数は75,049名です
総投稿数は104,352件です

投稿数ランキング

1
seasoft
7333
2
468
3217
3
AMUAMU
2712
4
nanasess
2202
5
umebius
2085
6
yuh
1664
7
red
1535
8
h_tanaka
1189
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
Copyright© EC-CUBE CO.,LTD. All Rights Reserved.