バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

デザインテンプレート EC-CUBE3.0版が登場!
広告掲載について

サイト内検索

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

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
takeo
投稿日時: 2017/7/30 18:36
対応状況: −−−
半人前
登録日: 2015/1/12
居住地:
投稿: 15
商品画像が外部パス(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
居住地: Tokyo
投稿: 712
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);
}


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


----------------
//////////////////////////////
(株)U-Mebius EC-CUBE3 カスタマイズ・高速化 ・バグ修正
EC-CUBE関連技術者の採用もお問い合わせください。


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

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

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

たぶん、
->findOneBy(array(
'file_name' => $filename,
'Product' => $Product,
の部分の array で複数登録してるのかな、と思うのですが、
どのように上記を書き換えると良いか、ご教示お願いいたします。
takeo
投稿日時: 2017/8/3 18:25
対応状況: −−−
半人前
登録日: 2015/1/12
居住地:
投稿: 15
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ペイメント

クレジットカード情報の非保持化対応

統計情報

総メンバー数は20,151名です
総投稿数は83,267件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1655
4
yuh
1420
5
red
1068
6
fukap
907
7
shutta
827
8 ramrun 789
9
tsuji
784
10
468
753
11
umebius
712
12
tao_s
651
13 sumida 638
14
homan
633
15 karin 630
16 DELIGHT 571
17
patapata
502
18
flealog
483
19 tonton 436
20
ecbg
387


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.