バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 『ご注文手続き』画面にて配送方法の初期値を変更したのですが、お支払い方法がその配送方法に準じた内容になりません。

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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() にて、注文情報に初期設定されている配送方法により選択肢が生成されますので、このあたりをカスタマイズする必要があります。


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

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


 



ログイン


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

統計情報

総メンバー数は98,586名です
総投稿数は112,032件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2325
5
umebius
2085
6
h_tanaka
1911
7
yuh
1898
8
mcontact
1593
9
red
1575
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
805
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
balisys
502


ネットショップの壺

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

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.