magento-使用自定义模块

时间:2015-05-20 15:02:04

标签: magento

我有一个自定义模块Account_Register。我正在创建一个名为company_details的自定义表。我的config.xml是 -

--
<global>
         <models>
            <register>
                <class>Account_Register_Model</class>
                <resourceModel>register_mysql4</resourceModel>
            </register>
            <register_mysql4>
                <class>Account_Register_Model_Mysql4</class>
                <entities>
                    <register>
                        <table>company_details</table>
                    </register>
                </entities>
            </register_mysql4>
        </models>

    <resources>
            <register_setup>
                <setup>
                    <module>Account_Register</module>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </register_setup>
            <register_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </register_write>
            <register_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </register_read>
        </resources>
</global>
---

帐户/注册/型号/ CompanyDetails.php

class Account_Register_Model_CompanyDetails extends Mage_Core_Model_Abstract
{
    public function _construct()
    {
        parent::_construct();
        $this->_init('register/company_details');
    }
}

帐户/注册/型号/ Mysql4 / CompanyDetails.php

class Account_Register_Model_Mysql4_CompanyDetails extends Mage_Core_Model_Mysql4_Abstract
{
    public function _construct()
    {
        $this->_init('register/company_details', 'company_details_id');
    }
}

和帐户/注册/模型/ Mysql4 / CompanyDetails / Collection.php

class Account_Register_Model_Mysql4_CompanyDetails_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
    public function _construct()
    {
        parent::_construct();
        $this->_init('register/company_details');
    }

}

我不明白这里出了什么问题。 任何帮助表示赞赏。

感谢。

1 个答案:

答案 0 :(得分:0)

$this->_init('register/company_details');就是问题所在。

最后,这行代码将为您提供Mage::getResourceSingleton('register/company_details')

这意味着Magento将在 config.xml中找到的节点<models>之后解析 config.xml 节点<register> 。 然后它将查看定义的<resourceModel>,因为它正在寻找ResourceSingleton。

config.xml 中查找register_mysql4,然后查看具有相同名称(<register_mysql4>)的节点和其下方的<class>节点。

此处一切正常,Magento现在可以理解register的{​​{1}}部分等于register/company_details

然后它只会大写Account_Register_Model_Mysql4中的每个字:company_details。 剩下要做的就是连接所有内容并用下划线Company_Details替换斜杠/

因此它会获得_ ,然后它可以映射到 Account_Register_Model_Mysql4_Company_Details 文件。
这就是它无法找到您的文件的原因。

根据您的实际实施,您实际应该做的是

app/code/the_code_pool_given_by_the_module/Account/Register/Model/Mysql4/Company/Details.php
$this->_init('register/companydetails'); Account_Register_Model_CompanyDetailsAccount_Register_Model_Mysql4_CompanyDetails中的

(不要忘记Account_Register_Model_Mysql4_CompanyDetails_Collection中应该是数据库表主键的第二个参数)