当我加载产品页面时,它会像这样在系统日志文件中显示错误..
2013-03-12T10:28:56+00:00 ERR (3): Recoverable Error: Method SM_Vendors_Model_Mysql4_Vendor_Collection::__toString() must return a string value in C:\xampp\htdocs\magento\app\code\local\SM\Vendors\Block\Adminhtml\Catalog\Product\Render\Vendor.php on line 21
我的代码就像..
应用\代码\本地\ SM \厂商\块\ Adminhtml \目录\产品\渲染\ vendor.php
class SM_Vendors_Block_Adminhtml_Catalog_Product_Render_Vendor extends Varien_Data_Form_Element_Abstract
{
public function getElementHtml()
{
$vendorCollection = $this->getVendorCollection(); //line#21
}
public function getVendorCollection()
{
$collection = Mage::getResourceModel('smvendors/vendor_collection')->__toString();
return $collection;
}
}
应用\代码\本地\ SM \厂商\模型\ Mysql4 \卖方\ Collection.php
class SM_Vendors_Model_Mysql4_Vendor_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
public function _construct()
{
parent::_construct();
$this->_init('smvendors/vendor');
}
public function __toString()
{
return $this->_init('smvendors/vendor');
}
}
我想在magento的系统日志文件中解决这种类型的错误显示。如果你知道那么请回复。
答案 0 :(得分:0)
确保$ this-> _init('smvendors / vendor');返回一个字符串。或者在__toString中返回其他字符串:
public function __toString(){
return $this->_init('smvendors/vendor');
}
答案 1 :(得分:0)
您的代码中似乎错误地使用了__toString()
方法
看来这个方法用于获取集合,而不是字符串。
public function getVendorCollection()
{
$collection = Mage::getResourceModel('smvendors/vendor_collection')->__toString();
return $collection;
}
这是不正确的,也是一个非常糟糕的主意 您需要重构代码,否则您将永远不会删除此警告。
怎么做
例如,您可以执行以下操作..
将__toString
方法重命名为getCollection
,并将使用_toString
的地点替换为getCollection
。
替换,直到日志中的消息不会消失。
在此处详细了解您的问题:http://www.php.net/manual/en/language.oop5.magic.php#object.tostring
所以这里是固定代码:
class SM_Vendors_Model_Mysql4_Vendor_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
public function _construct()
{
parent::_construct();
$this->_init('smvendors/vendor');
}
public function getCollection()
{
return $this->_init('smvendors/vendor');
}
public function __toString()
{
return $this->_init('smvendors/vendor');
}
}
二等......
class SM_Vendors_Block_Adminhtml_Catalog_Product_Render_Vendor extends Varien_Data_Form_Element_Abstract
{
public function getElementHtml()
{
$vendorCollection = $this->getVendorCollection(); //line#21
}
public function getVendorCollection()
{
$collection = Mage::getResourceModel('smvendors/vendor_collection')->getCollection();
return $collection;
}
}