バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

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

これは容易には出来ませんか?
okazy
投稿日時: 2019/1/15 13:39
対応状況: −−−
半人前
登録日: 2017/10/11
居住地:
投稿: 28
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
居住地:
投稿: 114
Re: お届け日を必須選択にする方法
ご回答ありがとうございました。
上記内容で記述したところ、注文ボタンクリック、支払い方法変更などでシステムエラーとなってしまいました。

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


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

ateshi
投稿日時: 2019/2/12 17:03
対応状況: −−−
一人前
登録日: 2016/12/21
居住地:
投稿: 114
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
居住地:
投稿: 3217
Re: お届け日を必須選択にする方法
new FormError('お届け日は必ず指定してください。')

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

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


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

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


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.