質問 > 管理機能 > 商品一覧のCSVダウンロードで商品情報に追加した項目が出力されない |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
in_kyoto |
投稿日時: 2019/11/5 20:18
対応状況: −−−
|
新米 登録日: 2019/6/18 居住地: 投稿: 5 |
商品一覧のCSVダウンロードで商品情報に追加した項目が出力されない [EC-CUBE] EC-CUBE4.0.2
[レンタルサーバ] さくらのレンタルサーバー [OS] FreeBSD 9.1-RELEASE-p24 amd64 [PHP] 7.3.9 [データベース] MySQL 5.7 [WEBサーバ] Apache/2.4.41 [ブラウザ] firefox [カスタマイズの有無] 1)商品情報の Eccube\Entity\Product に Entityのカスタマイズで下記(コードA)のように商品サイズ「 deliv_size 」を追加しました。 2)データベースのテーブル「 dtb_csv 」に下記(コードB)のようにphpMyAdminで情報を追加しました。 [現象] 商品一覧でCSVダウンロードをしたところ、一行目の項目には「商品サイズ」と出力されるのですが、 2行目移行のデータには「delv_size」の値が出力されません。 [教えていただきたいところ] おそらく2)でphpMyAdminでデータを追加したために、何らかの問題が起こっていると考えているのですが、 問題が何のかが判りません。 他の方の書き込みを見ている感じだと、2)でマイグレーションを行っていないからでしょうか? どなたか教えていただければ幸いです。 -------------------------- コードA -------------------------- <?php // app/Customize/Entity/ProductTrait.php namespace Customize\Entity; use Doctrine\ORM\Mapping as ORM; use Eccube\Annotation as Eccube; /** * @Eccube\EntityExtension("Eccube\Entity\Product") */ trait ProductTrait { /** * @ORM\Column(type="integer", nullable=true) * @Eccube\FormAppend( * auto_render=true, * options={ * "required": false, * "label":"商品サイズ" * } * ) */ public $deliv_size; } ?> -------------------------- コードB -------------------------- csv_type_id - 1 entity_name - Eccube\\Entity\\Product field_name - deliv_size reference_field_name - deliv_size disp_name - 商品サイズ discriminator_type - csv -------------------------- |
umebius |
投稿日時: 2019/11/5 20:21
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 商品一覧のCSVダウンロードで商品情報に追加した項目が出力されない $Product->getDelivSize()かdeliv_sizeプロパティはプログラム側で認識してますよね?
reference_field_nameはdeliv_sizeではなく、「NULL」だと思いますが、変えてみるとどうでしょうか?
|
in_kyoto |
投稿日時: 2019/11/5 21:22
対応状況: 解決済
|
新米 登録日: 2019/6/18 居住地: 投稿: 5 |
Re: 商品一覧のCSVダウンロードで商品情報に追加した項目が出力されない umebius様 お返事ありがとうございます。
問題が解決いたしましたので、まずお礼を申し上げます。 ありがとうございました! アドバイスいただきました2つの事柄を下記のように実行しました。 1)$Product->getDelivSize()かdeliv_sizeプロパティはプログラム側で認識してますよね? 2)reference_field_nameはdeliv_sizeではなく、「NULL」だと思いますが、変えてみるとどうでしょうか? まず、2)を確認したところ、reference_field_name を NULL に変更しても動作しませんでした。 次にreference_field_name を NULL にした状態で 1)を試すためコードAを下記のように変更しましたら、無事CSVで deliv_size の値が出力されました。 アドバイスをいただく前に、コードAに function getDeliv_size() を追加していたのですが、全然動かずに困っていました。 アドバイスの通り、function getDelivSize() を追加したところ、すぐに動作したので、びっくりしました。 EC-Cube4のエンティティで関数を動作させるための命名規則が存在するのでしょうか? 教えていただければ幸いです。 -------------------------- コードA -------------------------- <?php // app/Customize/Entity/ProductTrait.php namespace Customize\Entity; use Doctrine\ORM\Mapping as ORM; use Eccube\Annotation as Eccube; /** * @Eccube\EntityExtension("Eccube\Entity\Product") */ trait ProductTrait { /** * @ORM\Column(type="integer", nullable=true) * @Eccube\FormAppend( * auto_render=true, * options={ * "required": false, * "label":"商品サイズ" * } * ) */ public $deliv_size; /** * Get deliv_size. * * @return int */ public function getDeliv_size() { return $this->deliv_size; } /** * Get deliv_size. * * @return int */ public function getDelivSize() { return $this->deliv_size; } /** * Set deliv_size. * * @param integer $name * * @return Product */ public function setDeliv_size($deliv_size) { $this->deliv_size = $deliv_size; return $this; } } ?> -------------------------- |
umebius |
投稿日時: 2019/11/6 7:22
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 商品一覧のCSVダウンロードで商品情報に追加した項目が出力されない 引用:
EC-Cube4のエンティティで関数を動作させるための命名規則が存在するのでしょうか? CSV出力の時、
という設定だと出力時に$Product->offsetGet('deliv_size');が呼ばれます。 https://github.com/EC-CUBE/ec-cube/blob/8aa1e38f042f7427d6f8f28b56887ef0082bc6fb/src/Eccube/Entity/AbstractEntity.php#L46:L59 その中で使われているInflector::classifyでメソッド名が決まっています https://github.com/doctrine/inflector/blob/v1.3.0/lib/Doctrine/Common/Inflector/Inflector.php#L273:L276 なので呼ばれる優先度の高い順としては下記です。 1. DelivSize 2. getDelivSize 3. isDelivSize 4. hasDelivSize
|
in_kyoto |
投稿日時: 2019/11/7 14:26
対応状況: −−−
|
新米 登録日: 2019/6/18 居住地: 投稿: 5 |
Re: 商品一覧のCSVダウンロードで商品情報に追加した項目が出力されない umebiusさま
ご返事ありがとうございます。 > なので呼ばれる優先度の高い順としては下記です。 > 1. DelivSize > 2. getDelivSize > 3. isDelivSize > 4. hasDelivSize リンク先のコードを隅々まで確認できておりませんが、 field_nameが優先度の高い順に変換されて、データの読み込みを試みるわけですね。 今後、エンティティを作成するときに気を付けたいとおもいます。 ご教授、ありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |