バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 商品登録画面に追加したフォームの登録処理でエラーになる

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
uedayy
投稿日時: 2021/9/8 14:00
対応状況: −−−
新米
登録日: 2021/9/8
居住地:
投稿: 1
商品登録画面に追加したフォームの登録処理でエラーになる
▼テンプレート
[EC-CUBE] EC-CUBE 4.0.6、新規インストール
[レンタルサーバ] 開発用mamp
[OS] mac os
[PHP] PHP 7.4.2
[データベース] MySQL5.7.26
[WEBサーバ] Apache/2.2.34
[ブラウザ] Chrome最新
[導入プラグインの有無] 無
[カスタマイズの有無] 有
商品登録画面にアイテム情報を複数追加するカスタマイズを行う
テーブル構造は、dtb_tag,dtb_product_tagを流用
商品登録画面で、dtb_itemの一覧をドロップダウンリスト表示し、選択された値をdtb_product_itemに登録する

<作成したファイル>
app/Customize/Entity/Item.php
app/Customize/Entity/ProductItem.php
app/Customize/Repository/ItemRepository.php
app/Customize/Repository/ProductItemRepository.php
app/Customize/Entity/ProductTrait.php
app/Customize/Form/Type/Admin/ProductItemType.php
app/Customize/Form/Extension/ProductTypeExtension.php
app/template/admin/Product/product_item.twig
app/Customize/EventSubscriber/ProductSubscriber.php

<参考にしたサイト>
https://a-zumi.net/eccube4-add-product-item/

[現象]
商品登録画面にitemドロップダウンリストの表示は出来たのですが、登録ボタンを押すと、エラーが出ます。
Expected argument of type "Customize\Entity\Item or null", "int" given.

//ProductTypeExtension.php//
$builder
->add('ProductItems', CollectionType::class, [
'entry_type' => ProductItemType::class,
'required' => false,
'allow_add' => true,
'allow_delete' => true,
'prototype' => true
]);

// 商品項目を登録
$productItems = $form->get('ProductItems')->getData();
/** @var ProductItem $productItem */
foreach($productItems as $productItem) {
    $productItem->setProduct($data);
    ★$productItem->setItem(■);
    $this->entityManager->persist($productItem);
}

★部分にコードを追加すればいいのかと思いますが、■の取得方法がわからないです。

// ProductItemType.php //
$builder
->add('item', ChoiceType::class, [
'required' => false,
'label' => 'オプション選択',
'choices' => $selectItems,
]);
}
//フォームタイプのnameがitemの場合のエラー
Expected argument of type "Customize\Entity\Item or null", "int" given.

//フォームタイプのnameをitem_idに変更した場合のエラー
Neither the property "item_id" nor one of the methods "getItemId()", "itemId()", "isItemId()", "hasItemId()", "__get()" exist and have public access in class "Customize\Entity\ProductItem".

フォームタイプでitemエンティティを使わないといけないような気がするのですが、、一つのフォームタイプでは無理なのでしょうか。
よろしくお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は72,983名です
総投稿数は102,060件です

投稿数ランキング

1
seasoft
7333
2
468
3072
3
AMUAMU
2712
4
nanasess
2174
5
umebius
2030
6
yuh
1612
7
red
1453
8
h_tanaka
1090
9
tsuji
936
10
fukap
907
11
shutta
835
12
tao_s
793
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.