バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > お届け先の複数指定(~shipping_multiple)ページの不具合

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
takerun
投稿日時: 2021/5/27 12:33
対応状況: 確認中
半人前
登録日: 2021/2/10
居住地: TOKYO
投稿: 11
お届け先の複数指定(~shipping_multiple)ページの不具合
▼テンプレート
[EC-CUBE]
4.0.5
[レンタルサーバ]
Xserver
[OS]
Mac
[データベース]
Mysql
[ブラウザ]
Chrome
[現象]

EC-CUBEのデフォルトの関数やJavaScriptなどを、自作のHTMLに組み込んで制作しているのですが、
「お届け先の複数指定」(~/shopping/shipping_multiple)ページ上では住所の数・商品数を任意に編集できるのに対し、その先の画面「商品購入」(~/shopping)上では1商品につき2住所までしか反映されません。
使用しているコード自体はデフォルトのものなので解決方法がわからなく、困っております。
どなたかご教授お願いします。
下記に現在使用中のコードを載せますので参考にしていただければ幸いです。

===== 不具合の出ているコード@shipping_multiple =====

{% extends 'default_frame.twig' %}

{% block javascript %}
<script>
$(function() {
$('.add').click(function() {
var data = $(this).data();
var idx = data.idx;
var itemIdx = 0;
var item = $('#item' + idx);
var row = $('#item' + idx + '-0');

// 既存のお届け先のrowをコピーして雛形とする
var addrow = $(row).clone();

// 追加する要素のIndexを決定
item.find('.shipping_item').each(function() {
itemIdx = $(this).attr('data-itemidx');
});
itemIdx = 1 + parseInt(itemIdx);
console.log('itemIdx', itemIdx);

// 行のID設定
addrow.attr('id', 'item' + idx + '-' + itemIdx);
addrow.attr('data-itemidx', itemIdx);

// お届け先セレクトボックスのIDとNAME設定
addrow.find('select').attr('name', 'form[shipping_multiple][' + idx + '][shipping][' + itemIdx + '][customer_address]');
addrow.find('select').attr('id', 'form_shipping_multiple_' + idx + '_shipping_' + itemIdx + '_customer_address');

// 数量のINPUTのIDとNAME設定
addrow.find('input').attr('name', 'form[shipping_multiple][' + idx + '][shipping][' + itemIdx + '][quantity]');
addrow.find('input').attr('id', 'form_shipping_multiple_' + idx + '_shipping_' + itemIdx + '_quantity');

// その他、divやbuttonのID設定
addrow.find('[id*="multiple_list__shipping_address"]').attr('id', 'multiple_list__shipping_address--' + idx + '_' + itemIdx + '');
addrow.find('[id*="multiple_list__shipping_quantity"]').attr('id', 'multiple_list__shipping_quantity--' + idx + '_' + itemIdx + '');
addrow.find('button').each(function() {
$(this).attr('id', 'button__delete--' + idx + '_' + itemIdx + '');
$(this).attr('data-itemidx', idx + '-' + itemIdx);
$(this).data('itemidx', idx + '-' + itemIdx);
$(this).removeAttr('style');
});

$(item).append($(addrow));
});

$(document).on('click', '.delete', function() {
var data = $(this).data();
console.log('item' + data.itemidx)
// document.getElementById('item' + data.itemidx).remove()
$('#item' + data.itemidx).remove();
});

});
</script>
{% endblock javascript %}

{% block main %}
<div class="wrapper wrapper-content ecommerce gray-bg">
<div class="container">
<div class="row">
<div class="col-xs-12">
<form id="shipping-multiple-form" method="post" action="{{ url('shopping_shipping_multiple') }}">
{{ form_widget(form._token) }}

<div class="ibox">
<div class="ibox-title relative">
<h5>お届け先を個別に設定</h5>
<div class="ec-AddAddress__new absolute t-r"><a href="{{ url('shopping_shipping_multiple_edit') }}" class="btn ec-inlineBtn">{{ '新規お届け先を追加'|trans }}</a></div>
</div>


{% for error in errors %}
<div class="text-danger">{{ error.message }}</div>
{% endfor %}

{% for orderItem in OrderItems %}
{% set idx = loop.index0 %}
{% set itemvalue = 0 %}


<div class="ibox-content list-items">
<div class="row">
<div class="col-sm-6 col-xs-12">
<div id="multiple_list__item_box--{{ idx }}" class="ec-AddAddress__add">


<div class="lst-image"><img src="{{ asset(orderItem.product.MainListImage|no_image_product, 'save_image') }}"></div>
<div class="lst-body">
<h3 class="lst-title">
{{ orderItem.productName }}<span></span>
</h3>
{% if orderItem.productClass.classCategory1 %}
<div class="ec-AddAddress__itemtSize">{{ orderItem.productClass.classCategory1 }}</div>
{% endif %}
{% if orderItem.productClass.classCategory2 %}
<div class="ec-AddAddress__itemtSize">{{ orderItem.productClass.classCategory2 }}</div>
{% endif %}

<p class="lst-action">
{% if orderItem.productClass.classCategory1 %}
<div class="ec-AddAddress__itemtSize">{{ orderItem.productClass.classCategory1 }}</div>
{% endif %}
{% if orderItem.productClass.classCategory2 %}
<div class="ec-AddAddress__itemtSize">{{ orderItem.productClass.classCategory2 }}</div>
{% endif %}
<div class="ec-AddAddress__itemtPrice">{{ '小計:'|trans }}{{ orderItem.totalPrice|price }}</div>

{% for key, value in compItemQuantities %}
{% if orderItem.productClass.id == key %}
<div class="ec-AddAddress__itemtNumber" id="multiple_list__value--{{ idx }}_{{ key }}">{{ '数量'|trans }}:{{ value }}</div>
{% set itemvalue = value %}
{% endif %}
{% endfor %}
</p>
</div>
</div>
</div>

<--------------------------------------------ここから----------------------------------------->

<div class="col-sm-6 col-xs-12">
<div id="item{{ idx }}" class="form-horizontal">
{% for shipping in form.shipping_multiple[idx].shipping %}
<div id="item{{ idx }}-{{ loop.index0 }}" data-itemidx="{{ loop.index0 }}" class="form-group item{{ idx }}">
<div id="multiple_list__shipping_address--{{ idx }}_{{ loop.index0 }}" class="ec-AddAddress__selectAddress">
<div class="col-md-7 col-sm-6">
<span>
<div class="Select Select--single is-searchable">
<label>{{ 'お届け先'|trans }}</label>
{{ form_widget(shipping.customer_address, {'attr': {'class': 'shipping'}}) }}
{{ form_errors(shipping.customer_address) }}
</div>
</span>
</div>
</div>
<div id="multiple_list__shipping_quantity--{{ idx }}_{{ loop.index0 }}" class="ec-AddAddress__selectNumber">
<div class="col-md-3 col-sm-4 w90px">
<span>
<label>{{ '数量'|trans }}</label>
{% for key, value in compItemQuantities %}
{% if orderItem.productClass.id == key %}
{% set quantity = shipping.quantity.vars.value ?: value %}
{{ form_widget(shipping.quantity, {'attr': {'class': 'quantity q_input'}, 'value': quantity}) }}
{{ form_errors(shipping.quantity) }}
{% endif %}
{% endfor %}
</span>
</div>
</div>
<div class="col-sm-2 dlt_btn">
<button id="button__delete--{{ idx }}_{{ loop.index0 }}" type="button" class="item-remove-btn"
{% if loop.index0 == 0 %}style="display:none;"{% endif %}
data-itemidx="{{ idx }}-{{ loop.index0 }}">{{'削除'|trans}}
</button>
</div>
</div>
{% endfor %}
</div>
<div id="multiple_list__add_button{{ idx }}" class="col-sm-10 col-sm-offset-2 br_btn_box">
<button id="button__add{{ idx }}" type="button" class="ec-inlineBtn add br_btn" data-idx="{{ idx }}">{{ 'お届け先追加'|trans }}</button>
</div>
</div>
<--------------------------ここまでのコードで、{{ 'お届け先追加'|trans }}で追加した、3つ目以降の住所が反映されなくなります----------------------------------------->


</div>
</div>



{#</div>#}
{#</div>#}
{% endfor %}

<div class="row mt10">
<div class="col-sm-6 col-xs-12">
<a href="{{ url('shopping') }}" class="btn btn-lg btn-default"><i class="fa fa-arrow-left" aria-hidden="true"></i>カートに戻る</a>
</div>
<div class="col-sm-6 col-xs-12 right-button">
<button id="button__confirm" type="submit" class="btn btn-lg btn-primary">{{ '選択したお届け先に送る'|trans }}</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>

{% endblock %}
468
投稿日時: 2021/5/30 8:28
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: お届け先の複数指定(~shipping_multiple)ページの不具合
コードを細かく検証していないのでハッキリとした原因は分かりませんが
2件目までは正常に追加できて3件目以降が追加されないという事は
お届け先追加ボタンを押した時に追加生成するエレメント(特にinput)のname属性が3件目以降は同じ値が入っているのではないでしょうか?
javascript内の
idxかitemIdxが3件目以降カウントアップされていないとか?
console.log()かalert()でidxの値を確認されてみては如何でしょうか?


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

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


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
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.