2

私はmagento 1.7を使用しています。なぜこれが起こるのかわかりません。編集のためにバックエンドで製品を開いてから複製をクリックすると、次のエラーが発生しました

Warning: Illegal string offset 'new_file' in D:\wamp\www\easyshop\app\code\core\Mage\Catalog\Model\Product\Attribute\Backend\Media.php on line 158

次のコードを実行してファイルをデバッグしようとすると:

print_r($newImages);
die;

それから私はこの次のデータを得ました

Array
(
    [/s/a/samsung_galaxy_s2_front1.jpg] => /s/a/samsung_galaxy_s2_front1_4.jpg
    [/s/g/sgs2p1.jpg] => /s/g/sgs2p1_4.jpg
    [/s/g/sgs2_11.jpg] => /s/g/sgs2_11_4.jpg
    [/s/g/sgs2-4386.jpg] => /s/g/sgs2-4386_4.jpg
)

配列キーが間違っていると思いますこの問題を解決するための解決策を教えてください

4

1 に答える 1

7

1.7.02でも同じ問題がありました。私が見つけた解決策は、Magento (IMHO) のバグのあるコードを変更することでした。

Mage_Catalog_Model_Product_Attribute_Backend_Media で、次の行を変更しました。

        // For duplicating we need copy original images.
        $duplicate = array();
        foreach ($value['images'] as &$image) {
            if (!isset($image['value_id'])) {
                continue;
            }
            $duplicate[$image['value_id']] = $this->_copyImage($image['file']);
            $newImages[$image['file']] = $duplicate[$image['value_id']];
        }

為に:

        // For duplicating we need copy original images.
        $duplicate = array();
        foreach ($value['images'] as &$image) {
            if (!isset($image['value_id'])) {
                continue;
            }
            $duplicate[$image['value_id']] = $this->_copyImage($image['file']);
            $newImages[$image['file']] = array();
            $newImages[$image['file']]['new_file'] = $duplicate[$image['value_id']];
            $newImages[$image['file']]['label'] = $image['label'];
        }

それは私にとってはうまくいきました...画像が適切に複製され、新しい製品で有効になりました。

于 2013-01-17T12:59:13.770 に答える