3

Magento 1.7.0.2 で製品画像の URL の配列を取得しようとしています。これが私の現在の(たとえば少し複雑な)コードです:

foreach ($_product->getMediaGalleryImages() as $_image) {
    $tmp = array(
        'image' => $this->helper('catalog/image')
                    ->init($this->getProduct(), 'thumbnail', $_image->getFile())
                    ->constrainOnly(true)
                    ->keepAspectRatio(true)
                    ->keepFrame(false)
                    ->resize(800, null),
        'thumb' => $this->helper('catalog/image')
                    ->init($this->getProduct(), 'thumbnail', $_image->getFile())
                    ->constrainOnly(true)
                    ->keepAspectRatio(true)
                    ->keepFrame(false)
                    ->resize(227, null),
        'label' => $this->htmlEscape($this->getImageLabel())
    );

    echo $tmp['image'] . '<br>';

    $all_imgs[] = $tmp;
}

foreach ($all_imgs as $blah) {
    echo $blah['image'] . '<br>';
    echo $blah['thumb'] . '<br>';
    echo $blah['label'] . '<br>';
}

a.jpg と b.jpg の 2 つの画像があります。最初の foreach では、somefolder/a.jpg と somefolder/b.jpg を取得しています。2 番目の foreach では、 somefolder/b.jpgを 2 回取得しています。

どういうわけか a.jpg が b.jpg に置き換えられていますが、その理由がわかりません。私が考えることができる唯一のことは、何かが値ではなく参照によって渡されているということですが、その場合、それがどこで起こっているのかわかりません。

4

1 に答える 1

1

コード

... = $this->helper('カタログ/画像')->...

文字列ではなく、オブジェクトを返します。このオブジェクトはシングルトンです。つまり、インスタンスがなく、データが置き換えられます。

使ってみて

... = (string)$this->helper('catalog/image')->...
于 2013-04-03T06:08:07.860 に答える