バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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/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/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/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 %}
の様です。

失礼しました。
« 1 (2)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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