バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 商品一覧の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
居住地: 東京日本橋
投稿: 1398
Re: 商品一覧のCSVダウンロードで商品情報に追加した項目が出力されない
$Product->getDelivSize()かdeliv_sizeプロパティはプログラム側で認識してますよね?

reference_field_nameはdeliv_sizeではなく、「NULL」だと思いますが、変えてみるとどうでしょうか?


----------------
EC-CUBE3系4系 カスタマイズ ECのプロがシステム特急案件承ります。
公式インテグレートパートナー エンジニア募集中U-Mebius

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
居住地: 東京日本橋
投稿: 1398
Re: 商品一覧のCSVダウンロードで商品情報に追加した項目が出力されない
引用:
EC-Cube4のエンティティで関数を動作させるための命名規則が存在するのでしょうか?
教えていただければ幸いです。


CSV出力の時、
entity_name - Eccube\\Entity\\Product
field_name - deliv_size

という設定だと出力時に$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


----------------
EC-CUBE3系4系 カスタマイズ ECのプロがシステム特急案件承ります。
公式インテグレートパートナー エンジニア募集中U-Mebius

in_kyoto
投稿日時: 2019/11/7 14:26
対応状況: −−−
新米
登録日: 2019/6/18
居住地:
投稿: 5
Re: 商品一覧のCSVダウンロードで商品情報に追加した項目が出力されない
umebiusさま

ご返事ありがとうございます。

> なので呼ばれる優先度の高い順としては下記です。
> 1. DelivSize
> 2. getDelivSize
> 3. isDelivSize
> 4. hasDelivSize

リンク先のコードを隅々まで確認できておりませんが、
field_nameが優先度の高い順に変換されて、データの読み込みを試みるわけですね。

今後、エンティティを作成するときに気を付けたいとおもいます。

ご教授、ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

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

統計情報

総メンバー数は54,049名です
総投稿数は94,128件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
2014
4
468
1908
5
yuh
1610
6
umebius
1398
7
red
1376
8
h_tanaka
939
9
fukap
907
10
tsuji
856
11
shutta
835
12 ramrun 789
13
tao_s
780
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 437


ネットショップの壺

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

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