バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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エンティティを使わないといけないような気がするのですが、、一つのフォームタイプでは無理なのでしょうか。
よろしくお願いいたします。
h_tanaka
投稿日時: 2021/10/21 13:01
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1644
Re: 商品登録画面に追加したフォームの登録処理でエラーになる
ProductItem の setItem() 関数の定義に問題があるように思われます。
アノテーションかパラメーターを見直してみてください。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1644
8
red
1570
9
mcontact
1289
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.