バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > お届け日を必須選択にする方法

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ateshi
投稿日時: 2019/1/10 14:43
対応状況: −−−
一人前
登録日: 2016/12/21
居住地:
投稿: 91
お届け日を必須選択にする方法
ECCUBE3にて来店受取専用の注文ページを作成しているのですが、
お届け日・お届け時間帯を必須選択にさせたいのです。

これは容易には出来ませんか?
okazy
投稿日時: 2019/1/15 13:39
対応状況: −−−
半人前
登録日: 2017/10/11
居住地:
投稿: 18
Re: お届け日を必須選択にする方法
お届け日の必須チェックは以下の箇所にバリデーションの処理を入れることでチェック可能です。

https://github.com/EC-CUBE/ec-cube/blob/87087e7ce97448cccfa5018e39f7c57b3b3f3ddc/src/Eccube/Form/Type/ShippingItemType.php#L121-L132

130行目を書き換えてお届け日がからの場合はaddError()でエラーを追加するように変更しています。


            ->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) {
                /** @var \Eccube\Entity\Shipping $data */
                $data = $event->getData();
                /** @var \Symfony\Component\Form\Form $form */
                $form = $event->getForm();
                $shippingDeliveryDate = $form['shippingDeliveryDate']->getData();
                if (!empty($shippingDeliveryDate)) {
                    $data->setShippingDeliveryDate(new \DateTime($form['shippingDeliveryDate']->getData()));
                } else {
                    // 画面下部にエラーメッセージを表示させる
                    $form['shippingDeliveryDate']->addError(new FormError('お届け日は必ず指定してください。'));
//                    $data->setShippingDeliveryDate(null);
                }
            });


そのままではエラーが画面に表示されませんので、テンプレートファイルを少し変更する必要があります。

https://github.com/EC-CUBE/ec-cube/blob/87087e7ce97448cccfa5018e39f7c57b3b3f3ddc/src/Eccube/Resource/template/default/Shopping/index.twig#L280



                                <label>お届け日</label>
                                {{ form_widget(form.shippings[idx].shippingDeliveryDate) }}<br class="sp">






                                <label>お届け日</label>
                                {{ form_widget(form.shippings[idx].shippingDeliveryDate) }}{{ form_errors(form.shippings[idx].shippingDeliveryDate) }}<br class="sp">



お届け時間についても同様にチェックとエラー表示の処理を追加すれば対応できるかと思います。
ateshi
投稿日時: 2019/2/12 11:46
対応状況: −−−
一人前
登録日: 2016/12/21
居住地:
投稿: 91
Re: お届け日を必須選択にする方法
ご回答ありがとうございました。
上記内容で記述したところ、注文ボタンクリック、支払い方法変更などでシステムエラーとなってしまいました。

なにか、記述が足らないかどうか不明です。
468
投稿日時: 2019/2/12 13:00
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1791
Re: お届け日を必須選択にする方法
もしかしたら記述ミスもあるかと思いますの、
デバッグモードでエラーログを確認されたほうが良いかと思います。
記述ミスがあった場合、どこか確認する事ができますので。


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

ateshi
投稿日時: 2019/2/12 17:03
対応状況: −−−
一人前
登録日: 2016/12/21
居住地:
投稿: 91
Re: お届け日を必須選択にする方法
エラーログではこのようにでます。

ClassNotFoundException in ShippingItemType.php line 131:
Attempted to load class "FormError" from namespace "Eccube\Form\Type".
Did you forget a "use" statement for another namespace?

131は
$form['shippingDeliveryDate']->addError(new FormError('お届け日は必ず指定してください。'));

との記述です。
468
投稿日時: 2019/2/13 12:12
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1791
Re: お届け日を必須選択にする方法
new FormError('お届け日は必ず指定してください。')

FormErrorクラスが見つからないというエラーが発生しています。

たぶん、
use Symfony\Component\Form\FormError;
の追記が足りないのではないかと思います。


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

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


 



ログイン


ec-cube.co

統計情報

総メンバー数は46,444名です
総投稿数は92,291件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1904
4
468
1791
5
yuh
1594
6
red
1313
7
umebius
1296
8
fukap
907
9
tsuji
840
10
shutta
835
11 ramrun 789
12
tao_s
758
13
h_tanaka
746
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

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