質問 > 管理機能 > 商品、会員の追加項目を受注にも反映させる |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
kumaan |
投稿日時: 2023/9/14 16:49
対応状況: 解決済
|
新米 ![]() ![]() 登録日: 2023/9/11 居住地: 投稿: 9 |
商品、会員の追加項目を受注にも反映させる お世話になっております。
見様見真似でEC-CUBEをカスタムして、BtoBサイトを構築中なのですがどうにも行き詰まってしまったので教えてください。 商品登録と会員登録の項目に、独自の項目を追加しました。 それらの情報を、受注時にも引き継ぎたいのです。 受注登録画面に項目を表示するために、 dtb_oder に追加項目のテーブルを作成した後、 OderTypeExtension.php を作成しました。
その後で、Resource>template>Oderよりedit.twigをCustomize>template>admin>Oderにコピーして、該当箇所に下記のようにフォームを追記しました。
ですが、管理画面側でシステムエラーが発生してうまくいきません。 エラーログは下記のとおりです。 [2023-09-14T16:47:21.465313+09:00] admin.ERROR [c64241ec] [0fccf3b] [1] [Eccube\Log\Logger:log:64] - システムエラーが発生しました。 ["Can't get a way to read the property \"demandcode\" in class \"Eccube\\Entity\\Order\".","/home/redheart/ドメイン/public_html/ec-cube/vendor/symfony/property-access/PropertyAccessor.php",511,"#0 /home/redheart/ドメイン/public_html/ec-cube/vendor/symfony/property-access/PropertyAccessor.php(154): Symfony\\Component\\PropertyAccess\\PropertyAccessor->readProperty(Array, 'demandcode', false)\n#1 /home/redheart/ドメイン/public_html/ec-cube/vendor/symfony/form/Extension/Core/DataAccessor/PropertyPathAccessor.php(92): Symfony\\Component\\PropertyAccess\\PropertyAccessor->getValue(Object(Eccube\\Entity\\Order), Object(Symfony\\Component\\PropertyAccess\\PropertyPath))\n#2 /home/redheart/ドメイン/public_html/ec-cube/vendor/symfony/form/Extension/Core/DataAccessor/PropertyPathAccessor.php(48): Symfony\\Component\\Form\\Extension\\Core\\DataAccessor\\PropertyPathAccessor->getPropertyValue(Object(Eccube\\Entity\\Order), Object(Symfony\\Component\\PropertyAccess\\PropertyPath))\n#3 /home/redheart/ドメイン/public_html/ec-cube/vendor/symfony/form/Extension/Core/DataAccessor/ChainAccessor.php(40): Symfony\\Component\\Form\\Extension\\Core\\DataAccessor\\PropertyPathAccessor->getValue(Object(Eccube\\Entity\\Order), Object(Symfony\\Component\\Form\\Form))\n#4 /home/redheart/ドメイン/public_html/ec-cube/vendor/symfony/form/Extension/Core/DataMapper/DataMapper.php(57): Symfony\\Component\\Form\\Extension\\Core\\DataAccessor\\ChainAccessor->getValue(Object(Eccube\\Entity\\Order), Object(Symfony\\Component\\Form\\Form))\n#5 /home/redheart/ドメイン/public_html/ec-cube/vendor/symfony/form/Form.php(388): Symfony\\Component\\Form\\Extension\\Core\\DataMapper\\DataMapper->mapDataToForms(Object(Eccube\\Entity\\Order), Object(RecursiveIteratorIterator))\n#6 /home/redheart/ドメイン/public_html/ec-cube/vendor/symfony/form/Form.php(492): Symfony\\Component\\Form\\Form->setData(Object(Eccube\\Entity\\Order))\n#7 /home/redheart/ドメイン/public_html/ec-cube/vendor/symfony/form/FormBuilder.php(210): Symfony\\Component\\Form\\Form->initialize()\n#8 /home/redheart/ドメイン/public_html/ec-cube/src/Eccube/Controller/Admin/Order/EditController.php(220): Symfony\\Component\\Form\\FormBuilder->getForm()\n#9 /home/redheart/ドメイン/public_html/ec-cube/vendor/symfony/http-kernel/HttpKernel.php(163): Eccube\\Controller\\Admin\\Order\\EditController->index(Object(Symfony\\Component\\HttpFoundation\\Request), Object(Symfony\\Bundle\\FrameworkBundle\\Routing\\Router), NULL)\n#10 /home/redheart/ドメイン/public_html/ec-cube/vendor/symfony/http-kernel/HttpKernel.php(75): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw(Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#11 /home/redheart/ドメイン/public_html/ec-cube/vendor/symfony/http-kernel/Kernel.php(202): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#12 /home/redheart/ドメイン/public_html/ec-cube/index.php(83): Symfony\\Component\\HttpKernel\\Kernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))\n#13 {main}"] [GET, /ec-cube/administrator/order/new, 61.194.59.26, https://ドメイン/ec-cube/administrator/order, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36] そもそものお作法が間違っているのか、作法はあっているけどコードの表記がまずいのか、ご教授ください。 よろしくお願いいたします。 |
h_tanaka |
投稿日時: 2023/9/14 16:56
対応状況: −−−
|
神 ![]() ![]() 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1424 |
Re: 商品、会員の追加項目を受注にも反映させる FormType が参照している Entity に追加されたフィールドがないためです。
こちら参考にしてください。 https://doc4.ec-cube.net/customize_entity
|
kumaan |
投稿日時: 2023/9/15 11:38
対応状況: −−−
|
新米 ![]() ![]() 登録日: 2023/9/11 居住地: 投稿: 9 |
Re: 商品、会員の追加項目を受注にも反映させる 回答ありがとうございます。
Entityを見るとスペルミスやOrderをCustomerのままだったり色々なミスがありました。 それらを一通り尚下にも関わらず、同じエラーが出ております。 請求先コードのdemandcodeを削除しても "Can't get a way to read the property \"demandcode\" in class \"Eccube\\Entity\\Order\".", と出るので書き方が間違っているのだと思いますが、引用したProductTraitは全く問題なく動作しているので違いがわかりません。 お手数ですが再度ご教授いただけないでしょうか。
|
h_tanaka |
投稿日時: 2023/9/15 11:43
対応状況: −−−
|
神 ![]() ![]() 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1424 |
Re: 商品、会員の追加項目を受注にも反映させる Proxy 生成やスキーマ更新などのコマンドは実行していますか?
EC-CUBEバージョンの記載がないので最新版 4.2.2 の場合でしたら、 app/proxy/entity 配下に Proxy ファイルが生成されるはずなので、指定された Entity やフィールドの定義があるか確認してみてください。
|
h_tanaka |
投稿日時: 2023/9/15 11:49
対応状況: −−−
|
神 ![]() ![]() 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1424 |
Re: 商品、会員の追加項目を受注にも反映させる エラーは FormType で発生していませんか?
FormType で定義している demandcode と Entity で定義している demandcode が合致しないのだと思います。
|
kumaan |
投稿日時: 2023/9/15 14:41
対応状況: −−−
|
新米 ![]() ![]() 登録日: 2023/9/11 居住地: 投稿: 9 |
Re: 商品、会員の追加項目を受注にも反映させる ご指摘の通りProxyにOderTriatが反映されていなかったので更新し、ProductTraitの表記と一部分違うところがあったのでそれらを調整しました。
public function setProductionArea($production_area = null) { $this->production_area = $production_area; return $this; } production_areaに合わせて、damand_codeと変更して、 SetDemandCode($demand_code = null)で表記を合わせて更新したところ、下記のエラーになりました。 <会員登録> 2023-09-15T14:34:33.644642+09:00] admin.ERROR [aaeb55eb] [ffa337c] [1] [Eccube\Log\Logger:log:64] - システムエラーが発生しました。 ["Can't get a way to read the property \"_\" in class \"Eccube\\Entity\\Customer\".", <受注登録> [2023-09-15T14:35:02.960112+09:00] admin.ERROR [aaeb55eb] [dd5abc3] [1] [Eccube\Log\Logger:log:64] - システムエラーが発生しました。 ["Neither the property \"customer_code\" nor one of the methods \"customer_code()\", \"getcustomer_code()\"/\"iscustomer_code()\"/\"hascustomer_code()\" or \"__call()\" exist and have public access in class \"Symfony\\Component\\Form\\FormView\" 今度は別のところにエラーが出てしまいました。 customer_codeのtwingファイルやTrait、CustomerTypeEctensionすべて眺めたのですが記載ミスが見つかりません。
引き続きお手数をおかけしますがよろしくお願いいたします。 |
h_tanaka |
投稿日時: 2023/9/15 14:57
対応状況: −−−
|
神 ![]() ![]() 登録日: 2016/7/22 居住地: 愛媛県 投稿: 1424 |
Re: 商品、会員の追加項目を受注にも反映させる エラーが発生した場合は、エラーログに出力されている情報をよく見て理解してください。
エラーログにはエラーが発生したファイルと行番号も出ているはずなので、その箇所を確認してください。 おそらくですが、会員登録のエラーは CustomerTypeExtension に定義されている 得意先名2 の '_' というフィールドが CustomerTrait に未定義なのではないかと思われます。 受注登録のエラーは customer_code というフォームが OrderTrait に未定義なのではないかと思われます。
|
kumaan |
投稿日時: 2023/9/15 15:56
対応状況: −−−
|
新米 ![]() ![]() 登録日: 2023/9/11 居住地: 投稿: 9 |
Re: 商品、会員の追加項目を受注にも反映させる ありがとうございます。
ログ→システムのエラーでは読んでもわからず、デバッグモードにもならないので頭を悩ませていたのですが、デバッグモードの設定を間違っていました。 デバッグモードが動いたら何が間違ってるかわかりました。 Oderのedit.twigにShipping.がついていたので追加項目にもそれを入れていたのですがそれが間違いでした。 初歩的なミスにお時間頂戴して、ご指摘いただきありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |