バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > お客様情報の入力画面でラジオボタンの選択によって後続のフォームを活性・非活性化したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
himuhara
投稿日時: 2024/7/22 10:58
対応状況: 開発中
新米
登録日: 2024/2/16
居住地:
投稿: 3
お客様情報の入力画面でラジオボタンの選択によって後続のフォームを活性・非活性化したい
[EC-CUBE]4.0.6
[レンタルサーバ]自社サーバー

始めて投稿させていただきます。
初心者に近い為的外れなご質問などあった場合はご指摘いただけますと幸いです。

現在非会員のお客様情報入力ページの項目追加等のカスタマイズを行っているのですが、その中で「受取方法」というラベルで「店頭受取」と「ヤマト配送」という形でラジオボタンで選択する項目を追加しており、ここまでは何とか実装できたのですが、この選択によってあとに続くフォームの入力可否を制御したいのです。

具体的には、「店頭受取」を選択すると「注文者住所」と「配送先住所」を非活性もしくは非表示にしたく、「ヤマト配送」を選ぶとそのまま入力可能なようにしたいと考えています。

NonMemberTypeExtension.phpで
->add('Recive',ChoiceType::class,[
'required' => true,
'choices' => [
$tentou=trans('店頭受取') => 1,
$yamato=trans('ヤマト配送') => 2,
],
'label' => false,
'expanded' => true,#ラジオボタンで表示させる為
'multiple' => false,#ラジオボタンで表示させる為
'attr'=>['id'=>'recive_choice']
])
//支払状況追記部
->add('Siharai',ChoiceType::class,[
'required' => true,
'choices' => [
$zumi=trans('支払済み') => 1,
$mibarai=trans('未払い') => 2,
$daibiki=trans('配送代引き') => 3,
],
'label' => false,
'expanded' => true,#ラジオボタンで表示させる為
'multiple' => false,#ラジオボタンで表示させる為
'attr'=>['id'=>'siharai_choice']
])


NonMemberExtention.php
//受取方法追記部分
->add('Recive',ChoiceType::class,[
'required' => true,
'choices' => [
$tentou=trans('店頭受取') => 1,
$yamato=trans('ヤマト配送') => 2,
],
'label' => false,
'expanded' => true,#ラジオボタンで表示させる為
'multiple' => false,#ラジオボタンで表示させる為
'attr'=>['id'=>'recive_choice']
])
//支払状況追記部分
->add('Siharai',ChoiceType::class,[
'required' => true,
'choices' => [
$zumi=trans('支払済み') => 1,
$mibarai=trans('未払い') => 2,
$daibiki=trans('配送代引き') => 3,
],
'label' => false,
'expanded' => true,#ラジオボタンで表示させる為
'multiple' => false,#ラジオボタンで表示させる為
'attr'=>['id'=>'siharai_choice']
])


if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$reciveChoice = $_POST['form']['Recive'];
if ($reciveChoice == 1) {
$_POST['form']['postal_code'] = '';
$_POST['form']['address'] = '';
}
}


上記のように記述してみたのですが考え方・書き方としてはこれでいかがでしょうか?

ご教示いただけますと幸いでございます。
どうぞよろしくお願いいたします。
mcontact
投稿日時: 2024/7/22 17:48
対応状況: −−−
登録日: 2022/1/22
居住地:
投稿: 1445
Re: お客様情報の入力画面でラジオボタンの選択によって後続のフォームを活性・非活性化したい
本コミュニティは開発者の相互にサポートするのための開発コミュニティです。
コードレビューを行う場所ではありません。
開発に関して初心者ということでしたら、開発できるレベルまで勉強されるか、御社エンジニアまたはEC-CUBEインテグレートパートナーに相談されることをオススメ致します。
https://www.ec-cube.net/integrate/partner/

そして、ざっくり見る限りchoicesの配列を設定している書き方がおかしく、またSymfonyでは$_SERVERや$_POSTのグローバル変数を使用してフォームからの制御は通常行いません。


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

Meganezaru
投稿日時: 2024/7/26 22:21
対応状況: −−−
新米
登録日: 2024/4/5
居住地:
投稿: 8
Re: お客様情報の入力画面でラジオボタンの選択によって後続のフォームを活性・非活性化したい
ラジオボタンの切り替えでRequestを発生させるわけではないと思いますので、フロント側JavaScriptでの制御がよさそうですね。

Extensionには、入力対象のフィールドをすべて入れておいて、ラジオボタンのイベントで住所などのフィールドを非活性させるようなイメージが良いと思います。

対象ページのTwigなどに、JQueryなどを仕込むのが良いのではないでしょうか

ソースを掲載する場合は、[CODE]~[/CODE](すべて半角で)
で囲むとインデントが崩れなくて見やすいです。


    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $options = $builder->get('company_name')->getOptions();

        $options['required'] = true;
        $options['constraints'] = [ new NotBlank() ];
        $options['attr']['placeholder'] = '会社名';

        $builder->add('company_name', TextType::class, $options);
    }
himuhara
投稿日時: 2024/8/6 8:50
対応状況: −−−
新米
登録日: 2024/2/16
居住地:
投稿: 3
Re: お客様情報の入力画面でラジオボタンの選択によって後続のフォームを活性・非活性化したい
ご指摘とアドバイスをいただきありがとうございます。
シンフォニーの参考書を購入の上そのあたりの作法を理解して進めて参ります。
himuhara
投稿日時: 2024/8/6 8:52
対応状況: −−−
新米
登録日: 2024/2/16
居住地:
投稿: 3
Re: お客様情報の入力画面でラジオボタンの選択によって後続のフォームを活性・非活性化したい
Meganezaru 様

アドバイスいただいた通りjavascript制御にて実装することができました。

又、[CODE]囲みに関て今後徹底させていただきます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は92,634名です
総投稿数は110,826件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2315
5
umebius
2085
6
yuh
1820
7
h_tanaka
1730
8
red
1574
9
mcontact
1445
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
804
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.