バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 商品画像が外部パス(http://を含んだパス)の場合、管理画面から修正できないのはなぜ?

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
takeo
投稿日時: 2017/7/30 18:36
対応状況: −−−
半人前
登録日: 2015/1/12
居住地:
投稿: 18
商品画像が外部パス(http://を含んだパス)の場合、管理画面から修正できないのはなぜ?
EC-CUBE 3.0.14
PHP Version 5.6.31
DBサーバー PostgreSQL 8.4

以前に教えて頂いた
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=19260&forum=10
で外部パスの画像でも画面に表示が無事出来るようになりましたので、商品データをCSVで一括登録。

あとから【画像が外部パスになっている商品のデータを編集】しようとすると、管理画面 admin/product/product/商品ID/edit にて、データ項目を修正、【商品を登録】ボタンを押すと
PHPにてエラーが発生し、修正することが出来ず困っております。

【PHPエラーログより】
PHP Fatal error: Call to a member function setRank() on null in
(インストールディレクトリ)/src/Eccube/Controller/Admin/Product/ProductController.php on line 437

データ項目は、同管理画面において、どの項目を修正しようとしても同様のエラーとなります。

通常の http://を含んでない商品画像の商品については、問題なく管理画面から修正できております。

どうしてなのか、どのようにすると良いのか、お知恵を貸して頂きたくお願いいたします。

【参考:管理画面における商品画像が外部パスの場合でも対応させるため変更した
template/admin/Product/product.twig の箇所】

{% for image in form.images %}
var image_filename ="{{ image.vars.value }}"
if(image_filename.indexOf('http://') != -1) {
var $img = $(proto_img.replace(/__path__/g, '{{ image.vars.value }}'));
} else {
var $img = $(proto_img.replace(/__path__/g, '{{ app.config.image_save_urlpath }}/{{ image.vars.value }}'));
}
var $widget = $('{{ form_widget(image) }}');
$widget.val('{{ image.vars.value }}');
$("#thumb").append($img.append($widget));
{% endfor %}
umebius
投稿日時: 2017/7/31 23:43
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 商品画像が外部パス(http://を含んだパス)の場合、管理画面から修正できないのはなぜ?
エラーが出ているのは下記コード周辺かと思います。(おそらく)

$ProductImage = $app['eccube.repository.product_image']
                            ->findOneBy(array(
                                'file_name' => $filename,
                                'Product' => $Product,
                            ));
$ProductImage->setRank($rank_val);


要は$ProductImageがfindOneByで取得できないことが直接の原因ですので、rank設定ができなくていいなら次のように書き換えては?
if(ProductImage) {
$ProductImage->setRank($rank_val);
}


他にも色々と問題は出てきそうな気がしますね。


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

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

takeo
投稿日時: 2017/8/2 19:11
対応状況: −−−
半人前
登録日: 2015/1/12
居住地:
投稿: 18
Re: 商品画像が外部パス(http://を含んだパス)の場合、管理画面から修正できないのはなぜ?
ありがとうございます!

早速試してみたところ、
画像が1つだけの時は【削除】出来るのですが、
画像が複数の時は削除してくれない
(【登録が完了しました。】とは出るのですが、
  画像が画面上で削除されていない。(データベースにも残ったまま。))
そんな状況でおります。

上記は、通常の http://を含んでない商品画像(複数の画像が登録されている商品)についても同様です。

たぶん、
->findOneBy(array(
'file_name' => $filename,
'Product' => $Product,
の部分の array で複数登録してるのかな、と思うのですが、
どのように上記を書き換えると良いか、ご教示お願いいたします。
takeo
投稿日時: 2017/8/3 18:25
対応状況: −−−
半人前
登録日: 2015/1/12
居住地:
投稿: 18
Re: 商品画像が外部パス(http://を含んだパス)の場合、管理画面から修正できないのはなぜ?
お陰様でたった今、上手く動作させることが出来たので報告させて頂きます!


  $ProductImage = $app['eccube.repository.product_image']
   ->findOneBy(array(
   'file_name' => $filename,
   'Product' => $Product,
  ));
  $ProductImage->setRank($rank_val); 


をコメントアウトし、

  
if($ProductImage) {
    if(ctype_digit($rank_val)){
        $ProductImage->setRank($rank_val);
    } else {
        $ProductImage->setRank(1);
    }
}


としたあと、直下にある

  
   $app['orm.em']->persist($ProductImage);


をコメントアウト。

そうすると、複数画像があるときでも画像の削除が行え、他の全ての項目が変更可能な状態に、今のところ一応なりました!

使用しているうちに不具合が出た場合には、またご報告させて頂きます。

それにしても、
setRank() で登録している rank は、何のランクなんでしょうか?
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1286
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.