バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 商品一覧のCSVダウンロードで商品情報に追加した項目が出力されない

管理機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
in_kyoto
投稿日時: 2019/11/7 14:26
対応状況: −−−
新米
登録日: 2019/6/18
居住地:
投稿: 5
Re: 商品一覧のCSVダウンロードで商品情報に追加した項目が出力されない
umebiusさま

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

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

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

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

ご教授、ありがとうございました。
umebius
投稿日時: 2019/11/6 7:22
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
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-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

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/5 20:21
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 商品一覧のCSVダウンロードで商品情報に追加した項目が出力されない
$Product->getDelivSize()かdeliv_sizeプロパティはプログラム側で認識してますよね?

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


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

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
--------------------------
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.