【发布时间】:2014-12-01 07:21:56
【问题描述】:
我在 magento 日志中收到此错误:
严格注意:非静态方法 不应调用 Mage_Catalog_Block_Product::getPriceHtml() 静态地,假设 $this 来自不兼容的上下文 /home/edistico/domains/fujitsu-skener.si/public_html/app/design/frontend/base/default/template/callforprice/callforprice_simple.phtml 第 23 行
这是 callforprice_simple.phtml:
<?php $_product = $this->getProduct() ?>
<?php
// RM: Dobimo attribut
$prodBuyType = Mage::getModel('catalog/product')->load($_product->getId())->getProductBuyType();
?>
<?php if ($_product->isAvailable()): ?>
<p class="availability in-stock"><?php echo $this->__('Availability:') ?> <span>
<?php echo $_product->getAttributeText('zaloga') ?></span></p>
<?php else: ?> <p class="availability out-of-stock">
<?php echo $this->__('Availability:') ?> <span><?php echo $this->__('Out of stock') ?></span></p><?php endif; ?>
<?php echo $this->getChildHtml('product_type_data_extra') ?>
<?php $model=Mage::getModel('callforprice/callforprice')->loadByProductId($_product->getId());
if ($prodBuyType != 1) {
if ($model->getId() && $model->getStatus()==1) {?>
<div class="call-for-price"><?php echo "<font size=3><strong>" .$this->__($model->getValue()). "</strong></font>";?></div>
<?php } else {
echo Mage_Catalog_Block_Product::getPriceHtml($_product);
}
} else {
echo Mage_Catalog_Block_Product::getPriceHtml($_product);
}
?>
这是类:
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Catalog
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
class Mage_Catalog_Block_Product extends Mage_Core_Block_Template
{
protected $_finalPrice = array();
public function getProduct()
{
if (!$this->getData('product') instanceof Mage_Catalog_Model_Product) {
if ($this->getData('product')->getProductId()) {
$productId = $this->getData('product')->getProductId();
}
if ($productId) {
$product = Mage::getModel('catalog/product')->load($productId);
if ($product) {
$this->setProduct($product);
}
}
}
return $this->getData('product');
}
public function getPrice()
{
return $this->getProduct()->getPrice();
}
public function getFinalPrice()
{
if (!isset($this->_finalPrice[$this->getProduct()->getId()])) {
$this->_finalPrice[$this->getProduct()->getId()] = $this->getProduct()->getFinalPrice();
}
return $this->_finalPrice[$this->getProduct()->getId()];
}
public function getPriceHtml($product)
{
$this->setTemplate('catalog/product/price.phtml');
$this->setProduct($product);
return $this->toHtml();
}
}
我可以寻求帮助吗?
谢谢
【问题讨论】:
-
getPriceHtml未定义为Mage_Catalog_Block_Product类的静态方法,您将其称为静态方法,这是不允许的 -
好的,我知道了,如何修复它?
-
你能告诉我们那节课吗?或者您可以简单地在类声明下将该方法设为静态
-
是否可以从我发布的 phtml 中调用 getPriceHtml static?我是 PHP 的初学者... :)