バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > Formのラジオボタンの選択状態を取得したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2018/7/19 15:16
対応状況: 解決済
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 632
Formのラジオボタンの選択状態を取得したい
EC-CUBE3.0.16

注文内容確認ページにおいて、支払方法のラジオボタンがチェックされているときに表示制御を行いたいと思っています。

以下のように支払方法の名称を取得判定することはできたのですが、チェックされているかどうかを判定する方法がわかりません。
どのように実装すればよいでしょうか?

src/Eccube/Resource/template/default/Shopping/index.twig
                    <h2 class="heading02">お支払方法</h2>
                    <div id="payment_list" class="column">
                        <div id="payment_list__body" class="form-group">
                            <ul id="payment_list__list" class="payment_list">
                            {% if form.payment is empty %}
                                <p class="errormsg text-danger">合計金額に対して可能な支払い方法がありません。<br>{{ BaseInfo.email02 }}にお問い合わせ下さい。</p>
                            {% endif %}
                            {% for key, child in form.payment %}
                            <li>
                                {{ form_widget(child, {'attr': {'class': 'payment' }}) }}
                                {% if form.payment.vars.choices[key].data.payment_image is not null %}
                                <img src="{{ app.config.image_save_urlpath }}/{{ form.payment.vars.choices[key].data.payment_image }}">
                                {% endif %}
                                {# ▼ ここから追加 ▼ #}
                                {% if form.payment.vars.choices[key].data.method == 'クレジットカード決済' &&  【クレジットカード決済にチェックが入っている】 %}]
                                    クレジットカード決済が選択されています
                                {% endif %}
                                {# ▲ ここまで追加 ▲ #}
                            </li>
                            {% endfor %}
                            {{ form_errors(form.payment) }}
                            </ul>
                        </div>
                    </div>


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

hmorita_j
投稿日時: 2018/7/19 15:20
対応状況: −−−
長老
登録日: 2017/3/3
居住地: 沈黙の巨大都市松戸
投稿: 191
Re: Formのラジオボタンの選択状態を取得したい
{{ dump(form.payment) }}

と記述してデバッグモードでアクセスすればやり方がわかると思います。
h_tanaka
投稿日時: 2018/8/6 15:46
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 632
Re: Formのラジオボタンの選択状態を取得したい
hmorita_j 様
ありがとうございます。

dump して調査し、次の記述でうまく判定することができました。

{% if form.payment.vars.choices[key].data.method == 'クレジットカード決済' and form.payment.vars.value == form.payment.vars.choices[key].value %}


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

TAT
投稿日時: 2018/8/18 11:54
対応状況: −−−
新米
登録日: 2018/8/18
居住地:
投稿: 5
Re: Formのラジオボタンの選択状態を取得したい
h_tanaka様
横から失礼致します。
私もちょうど、支払方法の種類に合わせて「注文する」ボタンの記述を変更したくて、上記のif条件文をどうすれば良いか悩んでいました。
差し支えなければ、dumpの具体的な表記の仕方を教えていただければ助かります。
宜しくお願いいたします。
h_tanaka
投稿日時: 2018/8/20 9:05
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 632
Re: Formのラジオボタンの選択状態を取得したい
TAT 様

hmorita_j 様の記述どおり次の表記をtwigで行うことでdumpできます。
{{ dump(form.payment) }}


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

TAT
投稿日時: 2018/8/21 9:24
対応状況: −−−
新米
登録日: 2018/8/18
居住地:
投稿: 5
Re: Formのラジオボタンの選択状態を取得したい
お返事ありがとうございます。

<div class="priceBox4">
{{ dump(form.payment) }}
{% if form.payment.vars.choices[key].data.method == 'ローン決済' and form.payment.vars.value == form.payment.vars.choices[key].value %}
<p id="summary_box__confirm_button"><button id="order-button" type="submit" class="btn btn-primary btn-block prevention-btn prevention-mask">ローン決済で注文する</button></p>
{% else %}
<p id="summary_box__confirm_button"><button id="order-button" type="submit" class="btn btn-primary btn-block prevention-btn prevention-mask">注文する</button></p>
{% endif %}
</div>

と記述してみましたが、エラーになってしまいました。
dumpの記述場所が悪いのか、判定文が間違っているのか調べてみますが、素人間違いのご指摘があれば頂けると助かります!

引用:

h_tanakaさんは書きました:
TAT 様

hmorita_j 様の記述どおり次の表記をtwigで行うことでdumpできます。
{{ dump(form.payment) }}

h_tanaka
投稿日時: 2018/8/21 9:27
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 632
Re: Formのラジオボタンの選択状態を取得したい
どのようなエラーメッセージが表示されますか?
エラーログかデバッグモードでご確認ください。


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

TAT
投稿日時: 2018/8/24 3:04
対応状況: −−−
新米
登録日: 2018/8/18
居住地:
投稿: 5
Re: Formのラジオボタンの選択状態を取得したい
ありがとうございます。デバッグモードでSynfony profilerを見ると、

CRITICAL - Twig_Error_Runtime: Variable "key" does not exist in "__string_template__66546facd3dc809c5532f87aa92763ad2c9bc7f343f7cb5f1f6242de7fd28a99" at line 373 (uncaught exception) at /home/hoge/www/eccube/vendor/twig/twig/lib/Twig/Template.php line 436
Context: {"exception":"Object(Twig_Error_Runtime)"}

というものと、

WARNING - skip GmoPaymentGatewayCust form events loading. config.yml not foud or invalid.

という類の、GMOをスキップした旨のエラーがいくつか出てきました。

ただし、今回のdumpを記載していてもしていなくてもエラー内容は変わらないようです。
Logの見方が間違っているのかもしれませんが、これだけでは、通常モードでのシステムエラーページの原因がつかめない状態です。

もしお知恵貸していただけるようでしたら宜しくお願いいたします。
h_tanaka
投稿日時: 2018/8/24 8:50
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 632
Re: Formのラジオボタンの選択状態を取得したい
変数 key が未定義の旨のエラーですね。
デバッグモードで表示されたエラーではファイル名をダブルクリックすればファイルのパスが表示されます。
上記のエラーの場合は、__string_template__66546facd3dc809c5532f87aa92763ad2c9bc7f343f7cb5f1f6242de7fd28a99 というキャッシュファイルの 373 行目を見ればエラーが発生しているコードの場所がわかります。


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

Ringo
投稿日時: 2018/8/24 16:11
対応状況: −−−
常連
登録日: 2018/8/10
居住地:
投稿: 31
Re: Formのラジオボタンの選択状態を取得したい
※横から失礼します。

{{ dump(form.payment) }}

↓辺りが見やすいかと。


	{ dump(form.payment) }}

	<h2 class="heading02">お支払方法</h2>
	<div id="payment_list" class="column">

 


銀行振込を選んだ場合:

"value" => "3"
+label: "銀行振込"

↓{{ dump(form.payment) }}の表示

FormView {#7491 ▼
 +vars: array:41 [▼
    "value" => "3"
    "attr" => []
    "form" => FormView {#7491}
    "id" => "shopping_payment"
    "name" => "payment"
    "full_name" => "shopping[payment]"
    "disabled" => false
    "label" => null
    "label_format" => null
    "multipart" => false
    "block_prefixes" => array:4 [▶]
    "unique_block_prefix" => "_shopping_payment"
    "translation_domain" => null
    "cache_key" => "_shopping_payment_entity"
    "read_only" => false
    "errors" => FormErrorIterator {#7492 ▶}
    "valid" => true
    "data" => Payment {#5768 ▶ …2}
    "required" => true
    "max_length" => null
    "pattern" => null
    "size" => null
    "label_attr" => []
    "compound" => true
    "method" => "POST"
    "action" => ""
    "submitted" => false
    "help" => null
    "freeze" => false
    "freeze_display_text" => true
    "multiple" => false
    "expanded" => true
    "preferred_choices" => []
    "choices" => array:4 [▼
      1 => ChoiceView {#7084 ▶}
      2 => ChoiceView {#7085 ▶}
      3 => ChoiceView {#7088 ▼
        +attr: []
        +label: "銀行振込"
        +value: "3"
        +data: Payment {#5768 ▶ …2}
      }
      4 => ChoiceView {#7089 ▶}
    ]
    "separator" => "-------------------"
    "placeholder" => null
    "choice_translation_domain" => false
    "is_selected" => Closure {#7493 ▶}
    "placeholder_in_choices" => false
    "empty_value" => null
    "empty_value_in_choices" => false
  ]
  +parent: FormView {#7486 ▶}
  +children: array:4 [▶]
  -rendered: false
}


「注文する」の判定は
{% for key, child in form.payment %}
で、「key」を設定しないと、
Twig_Error_Runtime in Template.php line 487: Variable "key" does not exist in "__string_template__3ff64db135867293786989cecbd6158bcc6c0b6ac1cdd64e78cd68d096a112b0" at line 355.
の様なエラーとなります。

コード例

	<div id="summary_box__result" class="total_amount">
		<p id="summary_box__total_amount" class="total_price">合計 <strong class="text-primary">{{ Order.total|price }}<span class="small">税込</span></strong></p>

		<div class="priceBox4">
			{% for key, child in form.payment %}
				{% if form.payment.vars.choices[key].data.method == '郵便振替' and form.payment.vars.value == form.payment.vars.choices[key].value %}
					<p id="summary_box__confirm_button"><button id="order-button" type="submit" class="btn btn-primary btn-block prevention-btn prevention-mask">郵便振替で注文する</button></p>
				{% endif %}
				{% if form.payment.vars.choices[key].data.method == '現金書留' and form.payment.vars.value == form.payment.vars.choices[key].value %}
					<p id="summary_box__confirm_button"><button id="order-button" type="submit" class="btn btn-primary btn-block prevention-btn prevention-mask">現金書留で注文する</button></p>
				{% endif %}
				{% if form.payment.vars.choices[key].data.method == '銀行振込' and form.payment.vars.value == form.payment.vars.choices[key].value %}
					<p id="summary_box__confirm_button"><button id="order-button" type="submit" class="btn btn-primary btn-block prevention-btn prevention-mask">銀行振込で注文する</button></p>
				{% endif %}
				{% if form.payment.vars.choices[key].data.method == '代金引換' and form.payment.vars.value == form.payment.vars.choices[key].value %}
					<p id="summary_box__confirm_button"><button id="order-button" type="submit" class="btn btn-primary btn-block prevention-btn prevention-mask">代金引換で注文する</button></p>
				{% endif %}
			{% endfor %}
		</div>

	</div>


あるいは、

	<div id="summary_box__result" class="total_amount">
		<p id="summary_box__total_amount" class="total_price">合計 <strong class="text-primary">{{ Order.total|price }}<span class="small">税込</span></strong></p>

		<div class="priceBox4">
			{% for key, child in form.payment %}
				{% if form.payment.vars.value == form.payment.vars.choices[key].value %}
					<p id="summary_box__confirm_button"><button id="order-button" type="submit" class="btn btn-primary btn-block prevention-btn prevention-mask">{{ form.payment.vars.choices[key].label }}で注文する</button></p>
				{% endif %}
			{% endfor %}
		</div>

	</div>

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


 



ログイン


EC-CUBEペイメント

統計情報

総メンバー数は36,248名です
総投稿数は88,524件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1851
4
yuh
1524
5
468
1315
6
red
1199
7
umebius
1007
8
fukap
907
9
shutta
827
10
tsuji
815
11 ramrun 789
12
tao_s
667
13 karin 656
14 sumida 641
15
homan
633
16
h_tanaka
632
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.