質問 > フロント機能 > 『ご注文手続き』画面にて配送方法の初期値を変更したのですが、お支払い方法がその配送方法に準じた内容になりません。 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
r_yamada |
投稿日時: 2025/1/14 18:01
対応状況: −−−
|
常連 ![]() ![]() 登録日: 2024/9/2 居住地: 投稿: 39 |
『ご注文手続き』画面にて配送方法の初期値を変更したのですが、お支払い方法がその配送方法に準じた内容になりません。 [EC-CUBE] 4.2.2
[レンタルサーバ] ローカル環境 [OS] Windows11 [PHP] 8.1.29 [データベース] MySql [WEBサーバ] ローカル環境 [ブラウザ] chrome 130.0.6723.117 お世話になっております。 『ご注文手続き』画面にて配送方法の初期値を変更したのですが、お支払い方法がその配送方法に準じた内容になりません。 配送方法の初期値はShippingType.phpの'Delivery'プルダウンのdata属性に値を入れる方法で変更したのですが、 お支払い方法の選択肢が上記で変更する前の選択肢が表示されてしまいます。 対応として、data-triggerのchangeイベントを発火し、その配送方法を選択した際のお支払い方法を表示させるか、 OrderTypeの選択肢を変更後の選択肢に変更するよう改修しようとしているのですが(できればこちらを実現したい) イベント発火は該当関数までは呼ばれるのですが表示に変化がなく、OrderTypeの選択肢変更も以下のように作成したのですがうまく行かず解決できません。 こちら実現する方法がありましたらご教授いただけないでしょうか。 ・index.twig document.addEventListener('DOMContentLoaded', function() { // 読み込み後にredirectCallbackを実行 const redirectElements = document.querySelectorAll('[data-trigger]'); redirectElements.forEach(function(element) { element.dispatchEvent(new Event(element.getAttribute('data-trigger'))); }); }); <div class="ec-rectHeading"> <h2>{{ 'お支払方法'|trans }}</h2> </div> <div class="ec-radio"> {% for key, child in form.Payment %} <div style="display: block;"> {% set Payment = form.Payment.vars.choices[key].data %} {{ form_widget(child, { 'attr': { 'data-trigger': 'change' }}) }} {% if Payment.payment_image is not null %} <p><img src="{{ asset(Payment.payment_image, 'save_image') }}"></p> {% endif %} </div> {% endfor %} </div> ・OrderType.php $builder->addEventListener(FormEvents::POST_SET_DATA, function (FormEvent $event) { $Order = $event->getData(); // 配送方法の取得 $Deliveries = []; foreach ($Order->getShippings() as $Shipping) { if ($Shipping->getDelivery()) { $Deliveries[] = $Shipping->getDelivery(); } } $Payments = $this->getPayments($Deliveries); $currentPayment = $Order->getPayment(); $charge = $currentPayment ? $currentPayment->getCharge() : 0; $Payments = $this->filterPayments($Payments, $Order->getPaymentTotal() - $charge); // フォームに支払い方法を追加 $form = $event->getForm(); $this->addPaymentForm($form, $Payments, $currentPayment); }); |
h_tanaka |
投稿日時: 2025/1/15 8:54
対応状況: −−−
|
神 ![]() ![]() 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1911 |
Re: 『ご注文手続き』画面にて配送方法の初期値を変更したのですが、お支払い方法がその配送方法に準じた内容になりません。 支払方法は、
src/Eccube/Form/Type/Shopping/OrderType.php getPayments() にて、注文情報に初期設定されている配送方法により選択肢が生成されますので、このあたりをカスタマイズする必要があります。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |