バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Ringo
投稿日時: 2018/8/30 19:42
対応状況: −−−
常連
登録日: 2018/8/10
居住地:
投稿: 70
Re: Formのラジオボタンの選択状態を取得したい
>{% if form.payment.vars.value == form.payment.vars.choices[key].value %}
>を
>{% if form.payment.vars.value == form.payment.vars.choices[key].label %}
>
>変えて動作致しました!

修正 '18.08.31
と言う事で、確認しているところです。。。ました。

現時点のところ、
3.0.13

3.0.11〜
は、
{% if form.payment.vars.value == form.payment.vars.choices[key].value %}
ですが、

3.0.10は、確かに
{% if form.payment.vars.value == form.payment.vars.choices[key].label %}
ですね。


{% if form.payment.vars.value.id == form.payment.vars.choices[key].value %}
の様です。

失礼しました。
TAT
投稿日時: 2018/8/30 10:03
対応状況: −−−
新米
登録日: 2018/8/18
居住地:
投稿: 5
Re: Formのラジオボタンの選択状態を取得したい
Ringo様

お返事が遅くなってしまいましたが、試行錯誤の末ようやく希望の挙動になりました!
私の環境では
{% 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 %}

の部分の

{% if form.payment.vars.value == form.payment.vars.choices[key].value %}

{% if form.payment.vars.value == form.payment.vars.choices[key].label %}

変えて動作致しました!
本当に助かりました!
ありがとうございます。また何かありましたら宜しくお願い致します。
Ringo
投稿日時: 2018/8/25 15:09
対応状況: −−−
常連
登録日: 2018/8/10
居住地:
投稿: 70
Re: Formのラジオボタンの選択状態を取得したい
>やはりエラーでページが表示されなくなりましたのでデバッグモードで表示、以下のスクリーンショットの状態になりました。

{{ dump(form.payment) }}

は「index_dev.php」を介さないと、

例えば、
eccube.CRITICAL [ca9e1e85] [06b5cf54] [1] [LogListener:logException:112] - Twig_Error_Syntax: Unknown "dump" function in "__string_template__0b9f869be1a8ef562badfb225c24214367682094ddbb1494a754bf620b1d60ab" at line 297. (以後略)

が発生する様です。

>2つ質問があるのですが、
>1.{% if form.payment.vars.value == form.payment.vars.choices[key].value %}を何か任意の取得したい値に変えないといけないでしょうか?


変える必要はありません

訂正:’18.08.30、'18.08.31
3.0.13

3.0.11〜
は、
{% if form.payment.vars.value == form.payment.vars.choices[key].value %}
ですが、

3.0.10は、
{% if form.payment.vars.value == form.payment.vars.choices[key].label %}

{% if form.payment.vars.value.id == form.payment.vars.choices[key].value %}
の様です。

(他のVersionは、確認中)

例えば「銀行振込」選んだ場合、
3.0.11〜は
form.payment.vars.valueは↓
FormView {#7437 ▼
 +vars: array:41 [▼
   "value" => "3"

form.payment.vars.choices[key].valueは↓
  "choices" => array:2 [▼
  3 => ChoiceView {#2443 ▼
   +attr: []
   +label: "銀行振込"
   +value: "3"
   +data: Payment {#2121 ▶ …2}
  }

3.0.10は
form.payment.vars.value.idは↓
FormView {#2362 ▼
 +vars: array:41 [▼
  "value" => Payment {#1957 ▼
  +__isInitialized__: true
  -id: 3

form.payment.vars.choices[key].valueは↓
  "choices" => array:4 [▼
  3 => ChoiceView {#2278 ▼
  +attr: []
  +label: "銀行振込"
  +value: "3"
  +data: Payment {#1957 ▶ …2}

で「value」と「value」or「id」と「value」が一致した「label」を表示する、

form.payment.vars.choices[key].label

です。

>2.{% for key, child in form.payment %}は
>引用:
>(略)

>のラジオボタンセレクタ自体にも使われているのですが、dumpしたデータの取得(ボタンの表示の箇所)にも使えるという認識で正しいでしょうか?

多分、ここの理解が不十分なのだと思います。

{% for key, child in form.payment %}
での「key」の値は
{% endfor %}
で「消失」します。
ですから、

                              <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 class="priceBox4">
内にて、再度、
{% for key, child in form.payment %}
{% endfor %}
としている訳です。

>ただ、デバッグモードでもボタンそのものが表示されない為、dumpした情報を拾えていない模様です。

「情報を拾えていない」 というか、なぜか、「条件一致しない」様ですね。
訂正:3.0.10→3.0.11にて、一致条件が変更されていました。

こちらの手元で、ボタンが表示されている、該当コードを示しておきます。

                    <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 %}
                            </li>
                            {% endfor %}
                            {{ form_errors(form.payment) }}
                            </ul>
                        </div>
                    </div>
                    <h2 class="heading02">お問い合わせ欄</h2>
                    <div id="contact_message" class="column">
                        {{ form_widget(form.message, {'attr': {'placeholder': 'お問い合わせ事項がございましたら、こちらにご入力ください。(3000文字まで)', 'rows': '6'}}) }}
                        {{ form_errors(form.message) }}
                    </div>
                    <div class="extra-form column">
                        {% for f in form.getIterator %}
                            {% if f.vars.name matches '[^plg*]' %}
                                {{ form_row(f) }}
                            {% endif %}
                        {% endfor %}
                    </div>
                </div><!-- /.col -->
                <div id="confirm_side" class="col-sm-4">
                    <div id="summary_box__total_box" class="total_box">
                        <dl id="summary_box__subtotal">
                            <dt>小計</dt>
                            <dd class="text-primary">{{ Order.subtotal|price }}</dd>
                        </dl>
                        <dl id="summary_box__quantity_price">
                            <dt>手数料</dt>
                            <dd>{{ Order.charge|price }}</dd>
                        </dl>
                        <dl id="summary_box__shipping_price">
                            <dt>送料</dt>
                            <dd>{{ Order.deliveryFeeTotal|price }}</dd>
                        </dl>
                        {% if Order.discount > 0 %}
                        <dl id="summary_box__discount_price">
                            <dt>値引き</dt>
                            <dd>{{ (0 - Order.discount)|price}}</dd>
                        </dl>
                        {% endif %}
                        <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>
                    </div>
                </div>

TAT
投稿日時: 2018/8/25 12:34
対応状況: −−−
新米
登録日: 2018/8/18
居住地:
投稿: 5
Re: Formのラジオボタンの選択状態を取得したい
tanakaさんRingoさん、ありがとうございます。
早速Ringoさんにご提示いただいたコードで試してみました。

引用:
{{ dump(form.payment) }}

を支払い方法セレクトの前に、

引用:
{% 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 class="priceBox4">の中に入れたところ、
やはりエラーでページが表示されなくなりましたのでデバッグモードで表示、以下のスクリーンショットの状態になりました。



dumpはおかげさまで動いているようで、以下のように選択中の支払い方法も拾っています。



ただ、デバッグモードでもボタンそのものが表示されない為、dumpした情報を拾えていない模様です。デバッグモードではない環境だと{{ dump(form.payment) }}を挿入した時点でページは表示されなくなりました。

2つ質問があるのですが、
1.{% if form.payment.vars.value == form.payment.vars.choices[key].value %}を何か任意の取得したい値に変えないといけないでしょうか?

2.{% for key, child in form.payment %}は

引用:
<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">
{% 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 %}
</li>
{% endfor %}
{{ form_errors(form.payment) }}
</ul>
</div>
</div>



のラジオボタンセレクタ自体にも使われているのですが、dumpしたデータの取得(ボタンの表示の箇所)にも使えるという認識で正しいでしょうか?

twigの働きをもっと勉強しないといけないのですが、あまりに初歩的な質問でしたら飛ばしていただいても構いません。

あと少しな感じがするのでなんとか動作するようにしたいと思っております。
お付き合いいただけますと助かります。
宜しくお願いいたします。
Ringo
投稿日時: 2018/8/24 16:11
対応状況: −−−
常連
登録日: 2018/8/10
居住地:
投稿: 70
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>

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


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


----------------
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/20 9:05
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1646
Re: Formのラジオボタンの選択状態を取得したい
TAT 様

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


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

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


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1294
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.