バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > {{ form(form)}}を2回目以降も有効にしたい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
disk.T
投稿日時: 2021/1/15 13:54
対応状況: −−−
半人前
登録日: 2020/10/7
居住地:
投稿: 14
{{ form(form)}}を2回目以降も有効にしたい
▼テンプレート
[EC-CUBE] 4..05 開発中
[レンタルサーバ] localhost
[OS] macOS
[PHP] 7.4.11
[データベース] MySQL8.0.22
[WEBサーバ] apache
[ブラウザ] chrome
[導入プラグインの有無] ココからセレクト
[カスタマイズの有無] ココからセレクトプラグインをカスマイズしています。
[現象]
以前も同様のスレッドを立てて質問をさせていただきました!
まだ解決しておらず再度投稿させていただきます…申し訳ございません。

コントローラからformを一度のみ渡しているため
セット商品の2個目以降、formが表示されないという現象です。
formを複数回、渡せるといいかとは思うのですが
実装に詰まっております。

ヒントとなるようなご回答があれば
お力添え願えますと幸いです。

mypage / history.twig
{% set index = 0 %}
                    {% for Shipping in Order.Shippings %}
                        {% set isShowReducedTaxMess = false %}
                        {% for orderItem in Shipping.productOrderItems %}
                            <div class="ec-orderDelivery__item">
                                <div class="ec-imageGrid">
                                {# セット商品(非固定)のみマイレシピ登録ボタン表示 #}
                                {% if not is_kokokara_select_direct_select(orderItem.productClass) %}
                                    <button type="button" class="add-myrecipe" data-index='{{ index }}'>マイレシピ登録</button>
                                        <div class="ec-modal add-myrecipe_{{ index }}">
                                            <div class="ec-modal-overlay">
                                                <div class="ec-modal-wrap">
                                                    <input type="image" src="{{ asset('assets/icon/cross-dark.svg') }}" class="ec-modal-close" alt="削除">
                                                    <div id="ec-modal-header" class="text-center">マイレシピの登録</div>
                                                        <div class="recipeName">
                                                            {{ form_start(form) }}
                                                            {{ form(form) }}
                                                            {{ form_end(form) }}
                                                        </div>
                                                </div>
                                            </div>
                                        </div>


MyPageControllerを改造して作成しています。historyにあたる箇所です。
/*
         * マイレシピを登録処理(モーダル内にFormを表示)
         */

        //  セット商品(親)のorderItem特定
        foreach ($Order->getOrderItems() as $orderItem) {
            if ($this->ksService->isKsProduct($orderItem, 1)) {
                $setOrderItem = $orderItem;
            }
        }

        $myrecipe = new MyRecipe();
        $myrecipe->setCustomer($Order->getCustomer());
        $myrecipe->setMyrecipeName();
        $myrecipe->setCreateDate(new \DateTime('now'));
        $myrecipe->setKsProduct($setOrderItem->getKsProduct());

        $form = $this->createForm(RecipeType::class, $myrecipe);
        $form->handleRequest($request);

        // formで送った後の処理
        if ($form->isSubmitted() && $form->isValid()) {
            $entityManager = $this->getDoctrine()->getManager();
            $entityManager->persist($myrecipe);

            // my_recipe_itemテーブルへ保存
            foreach ($setOrderItem->getKsOrderItemChildren() as $ksOrderItemChild) {
                $myrecipeItem = new MyRecipeItem();
                $myrecipeItem->setMyRecipe($myrecipe);
                $myrecipeItem->setQuantity($ksOrderItemChild->getOrderItem()->getQuantity());
                $myrecipeItem->setProductClass($ksOrderItemChild->getOrderItem()->getProductClass());
                $myrecipeItem->setKsSelectItemGroup($ksOrderItemChild->getKsSelectItemGroup());
                $myrecipe->addMyRecipeItem($myrecipeItem);
                $entityManager->persist($myrecipeItem);
            }
            $entityManager->flush();
        }

        return [
            'Order' => $Order,
            'stockOrder' => $stockOrder,
            'myrecipe' => $myrecipe,
            'form' => $form->createView(),
        ];
    }

kishikawa
投稿日時: 2021/1/18 10:05
対応状況: −−−
一人前
登録日: 2018/12/20
居住地: 松戸
投稿: 89
Re: {{ form(form)}}を2回目以降も有効にしたい
formは難しいです。
複数同一のformがあるものについては、元のformにCollectionを使ってみるのも手かなと思います。
https://symfony.com/doc/current/reference/forms/types/collection.html

また、あまりに苦戦するようでしたら、実装は面倒ですがformを使わないことも選択肢に入ると思います。


----------------
株式会社ジョーレン
EC-CUBEプラチナパートナー

スピード構築でEC事業をサポート致します
EC-CUBE2系、3系、4系構築実績あり

ホームページ

disk.T
投稿日時: 2021/1/20 12:04
対応状況: 開発中
半人前
登録日: 2020/10/7
居住地:
投稿: 14
Re: {{ form(form)}}を2回目以降も有効にしたい
ご返信ありがとうございます!
Formは難しいですね…

CollectionTypeを利用して
実装できるよう試してみます!!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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