▼テンプレート
[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(),
];
}