在获取Magento产品图像时,未找到图像文件。

3
我试图获取产品图片,但是Magento显示错误:未找到图片文件。
There has been an error processing your request
Image file was not found.

Trace:
#0 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Catalog/Helper/Image.php(166): Mage_Catalog_Model_Product_Image->setBaseFile(NULL)
#1 /Applications/XAMPP/xamppfiles/htdocs/whi/app/design/adminhtml/default/default/template/whi/brand/my_collections/brand_indi_collection_view.phtml(98): Mage_Catalog_Helper_Image->init(Object(Mage_Catalog_Model_Product), 'thumbnail')
#2 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Block/Template.php(241): include('/Applications/X...')
#3 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('adminhtml/defau...')
#4 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView()
#5 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Adminhtml/Block/Template.php(81): Mage_Core_Block_Template->_toHtml()
#6 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Adminhtml_Block_Template->_toHtml()
#7 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Block/Text/List.php(43): Mage_Core_Block_Abstract->toHtml()
#8 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Core_Block_Text_List->_toHtml()
#9 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Block/Abstract.php(637): Mage_Core_Block_Abstract->toHtml()
#10 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Block/Abstract.php(581): Mage_Core_Block_Abstract->_getChildHtml('content', true)
#11 /Applications/XAMPP/xamppfiles/htdocs/whi/app/design/adminhtml/default/default/template/whohasitadmin/layout/admin.phtml(224): Mage_Core_Block_Abstract->getChildHtml('content')
#12 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Block/Template.php(241): include('/Applications/X...')
#13 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('adminhtml/defau...')
#14 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView()
#15 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Adminhtml/Block/Template.php(81): Mage_Core_Block_Template->_toHtml()
#16 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Adminhtml_Block_Template->_toHtml()
#17 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Model/Layout.php(555): Mage_Core_Block_Abstract->toHtml()
#18 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Controller/Varien/Action.php(390): Mage_Core_Model_Layout->getOutput()
#19 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/local/Whi/Brands/controllers/MycollectionController.php(358): Mage_Core_Controller_Varien_Action->renderLayout()
#20 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Whi_Brands_MycollectionController->individual_collection_viewAction()
#21 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('individual_coll...')
#22 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#23 /Applications/XAMPP/xamppfiles/htdocs/whi/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#24 /Applications/XAMPP/xamppfiles/htdocs/whi/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#25 /Applications/XAMPP/xamppfiles/htdocs/whi/index.php(90): Mage::run('', 'store')
#26 {main}

Error log record number: 1154029962119

这是我的控制器。
public function individual_collection_viewAction() {

        $Params = $this->getRequest()->getParams();
        $category = new Mage_Catalog_Model_Category();

        $category->load($Params['id']);
        $collection = $category->getProductCollection();
        $collection->addAttributeToSelect('*');
        $data['products'] = $collection->load();

        $this->loadLayout();

        $block = Mage::app()->getLayout()->getBlock('mycollection_individual_view');

        if ($block) {
            $block->setData($data);

        }
        $this->renderLayout();
    }

这是我的观点:

    <?php 
                                        foreach ($data['products'] as $product) { 
                                          $productName = $product->getName();
                                          $proimage = Mage::helper('catalog/image')->init($product, 'thumbnail');
                                          //$productImage = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB, true) . "media/catalog/product" .$product->getImage();
?>

成功获取产品名称,但在尝试获取图像时出现了重新获取图像未找到的问题。有人能帮我解决这个问题吗?


1
尝试使用 $product->getImage(); //getSmallImage(), getThumbnail() - Sathish
Sathish,它显示了这个错误 Fatal error: Call to a member function getImage() on a non-object in /Applications/XAMPP/xamppfiles/htdocs/whi/app/design/adminhtml/default/default/template/whi/brand/my_collections/brand_indi_collection_view.phtml on line 99 - Muhammad Awais
2个回答

3
首先,您需要在Magento管理员中验证是否选择了基本、小型和缩略图像。
管理员->目录->管理产品->产品->图像
然后,您可以使用以下代码来调用图像:
$proimage = (string)Mage::helper('catalog/image')->init($product, 'thumbnail');//image,smallimage

或者

$proimage = Mage::getModel('catalog/product_media_config')->getMediaUrl($product->getThumbnail()); //getSmallImage(), getImage()

编辑:

foreach ($data['products'] as $product) { 
     $product = Mage::getModel('catalog/product')->load($product->getId());
     $productName = $product->getName();
     $proimage = Mage::getModel('catalog/product_media_config')->getMediaUrl($product->getThumbnail());
    }

Sathish,我检查了图片是否存储在Magento管理员面板中,也在此路径http://localhost/abc/media/catalog/product/s/h/shoes.jpg中检查了图片。 图像文件实际存在。我使用了您的代码,但仍然出现找不到图像文件的错误。 - Muhammad Awais
我更新了我的答案,请检查并让我知道 $product->getName(); 是否正常工作,意味着 getThumbnail() 也正常工作,请尝试使用 var_dump($product); 如果您看到缩略图,它将显示。 - Sathish
Sathish,这是针对一个产品的工作。当我添加了你的更新代码后,它只显示一个产品的图像,其他产品的图像没有显示。但现在没有发生找不到图像的错误,我还缺少什么呢 :-( - Muhammad Awais
甚至我删除了显示的图片,但在删除后它仍然只显示在一个产品中。 - Muhammad Awais
它跳转到该网址:http://localhost/whi/media/catalog/product/,而不是正确的网址。 - Muhammad Awais
显示剩余4条评论

0
<?php 
foreach ($data['products'] as $product) { 
$product = Mage::getModel('catalog/product')->load($product->getId());
$productName = $product->getName();
$proimage = Mage::helper('catalog/image')->init($product, 'thumbnail');
?>

亲爱的Alex,感谢您的回复。它显示的是占位图像而不是产品图像。 - Muhammad Awais

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接