我必须在billing.phtml中调用自定义Module类,它在结帐页面上显示额外的字段。
但我得到了PHP Fatal error: Call to a member function getAllOptions() on a non-object
以下是我的代码 -
文件名 - Business.php
文件路径 - /var/www/html/app/code/community/Partsimple/CustomFields/Model/Primarybusiness
class Partsimple_CustomFields_Model_Primarybusiness_Business extends Mage_Eav_Model_Entity_Attribute_Source_Table
{
public function getAllOptions()
{
if (!$this->_options) {
$this->_options[] = array(
'value' => '',
'label' => 'Please Select Primary Business'
);
$this->_options[] = array(
'value' => 1,
'label' => 'End Consumer / DIY'
);
$this->_options[] = array(
'value' => 2,
'label' => 'Service Technician'
);
$this->_options[] = array(
'value' => 3,
'label' => 'Other Professional'
);
// $this->_options = Mage::getResourceModel('directory/region_collection')->load()->toOptionArray();
}
return $this->_options;
}
}
**文件名 - ** config.xml ****
<config>
<modules>
<Partsimple_CustomFields>
<version>1.0.1</version>
</Partsimple_CustomFields>
</modules>
<global>
<models>
<Partsimple_CustomFields>
<class>Partsimple_CustomFields_Model</class>
</Partsimple_CustomFields>
</models>
<fieldsets>
<customer_account>
<vendor_account>
<create>1</create>
<update>1</update>
</vendor_account>
</customer_account>
<customer_address>
<vendor_account>
<to_quote_address>*</to_quote_address>
</vendor_account>
<primary_business>
<to_quote_address>*</to_quote_address>
<primary_business>
</customer_address>
<sales_convert_order_address>
<vendor_account>
<to_quote_address>*</to_quote_address>
</vendor_account>
</sales_convert_order_address>
<sales_convert_quote_address>
<vendor_account>
<to_order_address>*</to_order_address>
<to_customer_address>*</to_customer_address>
</vendor_account>
<primary_business>
<to_order_address>*</to_order_address>
<to_customer_address>*</to_customer_address>
</primary_business>
</sales_convert_quote_address>
</fieldsets>
</global>
</config>
我正在 billing.phtml 文件的下面写一行来调用上面的business.php
类方法getAlloptions();
<?php echo Mage::getModel('partsimple/customFields_model_primarybusiness_business')->getAllOptions();?>
我也试过打印课程
<?php echo "Class: ".get_class(Mage::getModel('partsimple/customfields_model_primarybusiness_business'));?>
但我一无所获。 请让我知道我做错了什么, 我想在billing.phtml上调用这个方法。
在config.xml文件中进行更正后,其工作正常。
要检查
config.xml
中的错误,请在&gt;中编辑后在浏览器中打开此文件任何编辑器都会显示错误。
现在该属性显示结帐页面和管理客户页面以及客户我的帐户部分,但在此部分中。我无法更新它。需要在config.xml fot customer_account标记中添加哪些字段。
我在config.xml
中添加了这样的内容<customer_account>
<primary_business>
<create>1</create>
<update>1</update>
</primary_business>
</customer_account>
答案 0 :(得分:0)
您是否在名为Partsimple_CustomFields.xml的app / etc / modules中添加了此文件:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Partsimple_CustomFields>
<active>true</active>
<codePool>community</codePool>
</Partsimple_CustomFields>
</modules>
</config>
答案 1 :(得分:0)
你说magento你的模型将被调用&#34; Partsimple_CustomFields&#34;在config.xml中,所以你应该总是使用名称&#34; Partsimple_CustomFields&#34;来调用你的模型。如下:
<?php echo Mage::getModel('Partsimple_CustomFields/primarybusiness_business')->getAllOptions();?>
答案 2 :(得分:0)
您需要查看<models>
节点。您将模型分组为Partsimple_CustomFields,但您尝试使用此Mage::getModel('partsimple/customFields_model_primarybusiness_business')
实例化您的类。您需要更改模型节点中的第一个节点,如下所示
<models>
<partsimple>
<class>Partsimple_CustomFields_Model</class>
</partsimple>
</models>
或者您需要像这样实例化您的模型:
Mage::getModel('Partsimple_CustomFields/customfields_model_primarybusiness_business')
<models>, <blocks>, and <helpers>
内的第一个节点是您的分组节点。当Magento试图确定您打算实例化的类时,Mage_Core_Model_Config::getGroupedClassName($groupType, $classId, $groupRootNode)
被要求将Partsimple_CustomFields / customfields_model_primarybusiness_business转换为实际的类名。它会检查你的config.xml。
我还应该提一下,通常的做法是不要在模型,块和助手节点中使用任何大写字母。