質問 > フロント機能 > ご注文手続き画面に新たにラジオボタン項目を追加したい |
フロント機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
gwkozaki |
投稿日時: 2021/7/9 17:10
対応状況: 解決済
|
常連 登録日: 2019/7/30 居住地: 日本 投稿: 53 |
Re: ご注文手続き画面に新たにラジオボタン項目を追加したい スレッドが解決済みになっておりませんでしたので、ステータス更新いたしました。
|
umebius |
投稿日時: 2019/11/29 14:24
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: ご注文手続き画面に新たにラジオボタン項目を追加したい そうですね、Extensionでも恣意的に追加されないようにしてやる必要があります。
説明がなかなかうまくできず申し訳ございません。 |
gwkozaki |
投稿日時: 2019/11/29 9:57
対応状況: 解決済
|
常連 登録日: 2019/7/30 居住地: 日本 投稿: 53 |
Re: ご注文手続き画面に新たにラジオボタン項目を追加したい umebius様
ご返信が遅くなり申し訳ございません。 引用: あくまでイメージですが なるほど!ようやく理解いたしました! OrderTypeのbuildFormが処理された後、Extensionが処理され始める。 その時Extension側にskip_add_formオプションに関する記述がないと、「あ、こいつは追加するんだ」ってなるわけですね。 umebius様には初歩的なところから教えていただけ、感謝しかありません。 ありがとうございました!m(_ _)m 問題も解決し、ロジックの方も理解できたためここでこのスレは解決済みとさせていただきます。 |
umebius |
投稿日時: 2019/11/28 18:59
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: ご注文手続き画面に新たにラジオボタン項目を追加したい あくまでイメージですが
OrderTypeのbuildFormメソッドを処理した上で(注文確定の際にはskip_add_formで何もaddされません) ExtensionのbuildFormメソッドが呼ばれ処理されます。 1つでもNotBlankのフォームがaddされてしまうとisValidがfalseになってしまうため、skip_add_formオプションがtrueの時はaddしてはいけないということになります。 |
gwkozaki |
投稿日時: 2019/11/28 16:01
対応状況: −−−
|
常連 登録日: 2019/7/30 居住地: 日本 投稿: 53 |
Re: ご注文手続き画面に新たにラジオボタン項目を追加したい umebius様
早速のご回答ありがとうございます!非常に勉強になります! 引用: いえ考え方としては逆でして、同じものだから最後のフォームが表示されない注文確認画面では(必須項目の)フォーム要素を追加するとまずいんですね。 なるほど、確認画面にFormが表示されてないという見た目に騙されていたということですね。 見た目上表示されていなくとも、確認画面ではフォームが生成されていて、生成されることで入力画面で入力したにも関わらず、真っさらなフォームが作られNullとなると。 そして必須のNullがあることで$form->isValid()がfalseとなり購入エラーになるということですかね。 そこでskip_add_formをオプションとして指定して、確認画面で新たにフォームを作成させないようにするというところでしょうか。 まだ分からないのですが、同じものとして扱われるのであればOrderTypeにさえskip_add_formに関する記述があればExtensionにも反映されそうな気がするのですが、なぜExtensionにも記述が必要なのでしょうか? 理解が遅く申し訳ございませんが、ご教授いただけますと幸いです。 よろしくお願いいたします。 |
umebius |
投稿日時: 2019/11/28 10:52
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: ご注文手続き画面に新たにラジオボタン項目を追加したい 引用:
1. TypeのExtensionの拡張の仕組み いえ考え方としては逆でして、同じものだから最後のフォームが表示されない注文確認画面では(必須項目の)フォーム要素を追加するとまずいんですね。 確認画面から注文処理へ遷移する場合は、画面にフォームがないのでデータは送られないけど、$form->isValid()である必要があり 項目を追加しないためのオプションとしてskip_add_formを使っています。 Extensionでもその際は追加しないよう対処してやる必要があります |
gwkozaki |
投稿日時: 2019/11/28 10:38
対応状況: −−−
|
常連 登録日: 2019/7/30 居住地: 日本 投稿: 53 |
Re: ご注文手続き画面に新たにラジオボタン項目を追加したい またまたご返答遅くなり申し訳ございません!
skip_add_form周りを調整し、動くようにするのに手間取ってしまいましたが、解決いたしました! ご助力いただいた umebius 様、大変お世話になりました。感謝いたします。 解決方法を以下に記述いたします。 上記のOrderTypeExtensionを以下のように変更することで解決いたしました。 OrderTypeExtension.php
こちら、OrderTypeのbuildFormメソッド内にも記述があったため、OrderTypeを拡張したOrderTypeExtensionには記述の必要はないように思っていましたが、必要なようですね。 問題は解決となりましたが、解決にあたり疑問に思ったことが1点あったため解る方がいらっしゃいましたらご教授いただきたいです。 【質問】 1. TypeのExtensionの拡張の仕組み OrderTypeExtension側でbuildFormを拡張していますが、OrderTypeのbuildForm内にある以下の記述が、OrderTypeExtensionで追加したフォームに適用されなかったということは、Extensionはその拡張しているフォームのTypeとは完全に別物として呼ばれているということなのでしょうか。
|
gwkozaki |
投稿日時: 2019/11/18 9:24
対応状況: −−−
|
常連 登録日: 2019/7/30 居住地: 日本 投稿: 53 |
Re: ご注文手続き画面に新たにラジオボタン項目を追加したい お返事が遅くなってしまい、申し訳ございません。
ご助力いただき、非常に助かります。ありがとうございます。 引用: 「注文確認画面で注文するボタンを押下すると、注文完了画面ではなく購入エラー画面に飛ばされる。」 skip_add_formオプションというフォームの定義をスキップするオプションのようなものがあるのですね。確認してみます! |
umebius |
投稿日時: 2019/11/16 22:54
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: ご注文手続き画面に新たにラジオボタン項目を追加したい 詳しく確認した訳ではありませんが、
「注文確認画面で注文するボタンを押下すると、注文完了画面ではなく購入エラー画面に飛ばされる。」 「$form->isValid()がfalseになっていることで、注文処理に入ることすらできていない」 ということであれば、OrderTypeExtensionでskip_add_formオプションを考慮していないためではないでしょうか。 ShoppingController.phpnのコメントにあるように 確認画面から注文処理へ遷移する場合は, Orderエンティティで値を引き回すためフォーム項目の定義をスキップする.必要があります。
|
gwkozaki |
投稿日時: 2019/11/14 14:55
対応状況: −−−
|
常連 登録日: 2019/7/30 居住地: 日本 投稿: 53 |
Re: ご注文手続き画面に新たにラジオボタン項目を追加したい 連絡が遅くなり失礼いたしました。
再び行き詰まってしまったため、ご教授いただけませんでしょうか。 あれからMasterTypeを利用すべく、 ・Customize\Repository\Master\ExampleRepositoryの設置。 ・ExampleテーブルをCustomize\Entity\Master\Exampleに移動し、dtbからmtbに変更。 ・Customize\Form\Type\Master\ExampleTypeの追加。 ・Customize\Form\Extension\Shopping\OrderTypeExtensionの追加。 ・Customize\Entity\OrderTraitにてOrderテーブルにexample_id及びそのセッタとゲッタの設置。 を行いました。 【現状】 ・mtbにテーブルの追加はできている。 ・ご注文手続き、ご注文確認ともにデータの受け渡しはできており、表示もできる。 ・注文確認画面で注文するボタンを押下すると、注文完了画面ではなく購入エラー画面に飛ばされる。 ・購入エラー後にOrderテーブルを見ると、新たに受注が立っており、example_idに選択した値が含まれているが受注一覧には表示されていない。 【試したこと】 ・ShoppingController.phpの以下の348行部分でvar_dumpを行ったところ、追加した値がNullになっている。 注文処理で一度OrderのUpdateが行われる際にNullになっているのではと考えていますが、間違いございませんでしょうか。 ・エラーとしてはShoppingControllerの$form->isValid()がfalseになっていることで、注文処理に入ることすらできていない。(var_dump下のif文の条件が$form->isValid()がtrueでないと入れない。) ShoppingController.php(一部抜粋)
【分からないこと】 1.そもそもこのやり方で大丈夫かどうか。 2.処理として足りていない部分はどこか。 3.注文するボタン押下後、どのような処理が走るか。 以下に関連のあるソースを添付いたしますので、 おかしな点があればご指摘いただけたらありがたいです。 よろしくお願いいたします。 ExampleRepository.php
Example.php
ExampleType.php
OrderTypeExtension.php
OrderTrait.php
|
(1) 2 » |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |