バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > ゲスト購入画面に国の選択を追加したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
sogatat
投稿日時: 2024/6/4 15:21
対応状況: −−−
半人前
登録日: 2024/4/14
居住地:
投稿: 20
ゲスト購入画面に国の選択を追加したい
システム情報

EC-CUBE 4.2.3 
サーバーOS Linux 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64 
DBサーバー SQLite version 3.40.1 
WEBサーバー symfony-cli/5.8.14 
PHP 7.4.33 (Core, date, libxml, openssl, pcre, sqlite3, zlib,  bcmath, bz2, ctype, curl, dom, hash, fileinfo, filter, ftp,  gd, SPL, iconv, intl, json, mbstring, session, standard,  pcntl, mysqlnd, PDO, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql,  Phar, posix, readline, Reflection, mysqli, shmop, SimpleXML,  soap, sockets, exif, sysvsem, sysvshm, tidy, tokenizer, xml,  xmlreader, xmlrpc, xmlwriter, xsl, zip, cgi-fcgi, Zend  OPcache, xdebug) 
User Agent Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0


ゲスト購入時に国を選択させて電話番号とセットで国番号(日本だと+81のような)をユーザーに入力してほしいと思っています。

一度自力でNonmemberエンティティを拡張して国番号を追加し、セレクトボックスから国番号を選択できるようにしました。

しかし商品購入画面の編集ボタンを押した時のフィールドがテキスト入力としては作れたのですが、これをセレクトボックスにするやり方がわかりません。

商品購入画面では電話番号や名前や会社名などを見るとどうも<input type="hidden" ...>なフィールドとしてテキストフィールドとしてセレクトボックスを作るあたりから困難を感じています

色々試行錯誤しているうちに、国選択についてはmtb_countryテーブルがあるようなのでこれを使える可能性に気が付きました。

FORM_COUNTRY_ENABLEパラメーターをtrueにすればよいという古い情報(ec-cube2時代?)の情報があったのですが、もしかすると現在の4系でも何かの方法で国選択フィールドをゲスト購入画面に追加できるのでしょうか。
※管理画面にはパラメーター設定できそうな画面は見つけられませんでした。

最終的には国として例えば「日本(+81)」のような国際電話番号部分を電話番号に連結して保存するか、またはデーターベースに国際電話番号部分だけ別に保存したいと思っています。

どちらのアプローチが正道なのか判断つかない状態ですのでアドバイスなどいただけましたら幸いです。
h_tanaka
投稿日時: 2024/6/4 15:25
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1682
Re: ゲスト購入画面に国の選択を追加したい
セレクトボックスを設置するには、 Symfony の ChoiceType を使用します。
https://zenn.dev/ttskch/articles/5b85d1c1c8afcd


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

sogatat
投稿日時: 2024/6/4 15:39
対応状況: −−−
半人前
登録日: 2024/4/14
居住地:
投稿: 20
Re: ゲスト購入画面に国の選択を追加したい
ご返信ありがとうございます。

ゲスト購入画面ではChoiceTypeでセレクトボックスを作成しております。
app/template/default/Shopping/nonmember.twig

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        //国際電話番号フレフィクスフィールド
        $builder->add('international_phone_number_prefix', ChoiceType::class, [
            'placeholder' => 'common.select__unspecified',
            'choices' => $this->CountryChoices,
            'required' => true,
        ]);


ところが次の商品購入画面に遷移すると画面上部にゲスト購入画面の入力内容が表示されており、そこに「編集」ボタンがあると思います。これを押した場合に以下のようになっています。


追加した国番号
app/template/default/Shopping/index.twig

<dl>
                                <dt>
                                    <label class="ec-label required">{{ '国番号'|trans }}</label>
                                    <span class="ec-required">{{ 'common.required'|trans }}</span>
                                </dt>
                                <dd>
                                    <div class="ec-input">
                                        <span class="customer-form customer-international_phone_number_prefix"></span>
                                    </div>
                                </dd>
                            </dl>


同じくその内容

<input type="hidden" id="customer-international_phone_number_prefix" class="customer-in" name="customer_international_phone_number_prefix" value="{{ Customer.international_phone_number_prefix }}">
                        <input type="hidden" id="customer-phone_number" class="customer-in" name="customer_phone_number" value="{{ Order.phone_number }}">

このinput type="hidden"のテキストフィールドの国番号をセレクトボックスにする方法をお教え願えないでしょうか
h_tanaka
投稿日時: 2024/6/4 15:47
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1682
Re: ゲスト購入画面に国の選択を追加したい
twig 側でフォームをレンダリングする必要があります。

<div class="ec-select{{ has_errors(form.international_phone_number_prefix) ? ' error' }}">
{{ form_widget(form.international_phone_number_prefix) }}
{{ form_errors(form.international_phone_number_prefix) }}
</div>


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

h_tanaka
投稿日時: 2024/6/4 15:49
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1682
Re: ゲスト購入画面に国の選択を追加したい
訂正します。
その次の商品購入画面ですね。
そのページでは確かに、都道府県を見ても分かる通りセレクトボックスではなく入力フィールドになります。

このページでセレクトボックスを表示するようにするようカスタマイズするより、新規でゲスト編集ページを作成してそこに遷移させるほうがやりやすいかもしれません。


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

sogatat
投稿日時: 2024/6/4 15:59
対応状況: −−−
半人前
登録日: 2024/4/14
居住地:
投稿: 20
Re: ゲスト購入画面に国の選択を追加したい
ご回答ありがとうございます。
説明がわかりにくくて失礼いたしました。

やはりこの画面でセレクトボックスを表示するのはなかなか難しいのですね。

ではアプローチ方法を変えて、もし使えるならば FORM_COUNTRY_ENABLEパラメーターを設定して国選択させておいて、その場合ならば商品購入画面の編集ボタンを押した場合でも国選択のセレクトボックスが出せるでしょうか
h_tanaka
投稿日時: 2024/6/4 16:06
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1682
Re: ゲスト購入画面に国の選択を追加したい
質問が変わっていないように思うのですが、
商品購入画面でゲスト情報編集時にセレクトボックスを表示するのは難しいと思います。
https://github.com/EC-CUBE/ec-cube/issues/6067
https://github.com/EC-CUBE/ec-cube/issues/3949


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

sogatat
投稿日時: 2024/6/4 16:41
対応状況: −−−
半人前
登録日: 2024/4/14
居住地:
投稿: 20
Re: ゲスト購入画面に国の選択を追加したい
ご回答ありがとうございます。

教えていただいたgithubの内容を見たら下記のようなアプローチでもできるのかな思ったのですが、下記のようなアプローチでできそうでしょうか。

app/template/default/Shopping/index.twig:35

$('#customer').click(function() {
                $(edit).each(function(index) {
                    var name = $(this).text();
                    {# カスタマイズ:customer-international_phone_number_prefixクラスを持つ要素だった場合はselect型にする #}
                    {# var input = $('<input id="edit' + index + '" type="text" />').val(name); #}
                    if ($(this).hasClass('customer-international_phone_number_prefix')) {
                        var input = $('<input id="edit' + index + '" type="select" />').val(name);
                    } else {
                        var input = $('<input id="edit' + index + '" type="text" />').val(name);
                    }
                    $(form[index]).empty().append(input);
                });

                $('.non-customer-display').hide();
                $('.non-customer-edit').show();
                $('.mod-button').show();
            });
h_tanaka
投稿日時: 2024/6/4 16:48
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1682
Re: ゲスト購入画面に国の選択を追加したい
GitHub ではマージ前なのでなんともいえないです。。

質問される前に試してみてもらえますか。
その上でエラー等出るようならエラー内容を提示くださいませ。


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

mcontact
投稿日時: 2024/6/4 17:47
対応状況: −−−
登録日: 2022/1/22
居住地:
投稿: 1351
Re: ゲスト購入画面に国の選択を追加したい
> ではアプローチ方法を変えて、もし使えるならば FORM_COUNTRY_ENABLEパラメーターを設定して国選択させておいて、その場合ならば商品購入画面の編集ボタンを押した場合でも国選択のセレクトボックスが出せるでしょうか

FORM_COUNTRY_ENABLEパラメーターは、EC-CUBE2系のお話ですのでEC-CUBE4系では対応できないです。


----------------
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EC-CUBEインテグレートパートナー【ゴールド】ランク
M&I Works
URL: https://miworks.biz/
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

(1) 2 3 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は90,160名です
総投稿数は110,324件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1682
8
red
1571
9
mcontact
1351
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.