我在模型中具有ABC功能。我想在控制器中调用该功能ABC。

我是Magento的新手,DNT对此有任何想法。任何身体可以告诉我如何做到这一点

有帮助吗?

解决方案

这就是所谓的魔术功能。

$yourModel = Mage::getModel('yourmodulename/yourmodelname')->load($id);

$return = $yourModel->abc();

或者你可以做

$yourModel = Mage::getSingleton('yourmodulename/yourmodelname')->load($id);

$return = $yourModel->abc();

这是您的参考 getingleton vs getModel

其他提示

您可以使用

Mage::getModel('modulename/modulename')->yourMethod();

假设您想要目录类别

Mage::getModel('catalog/category')->load($id);

假设您的配置是 -

    <models>
        <modulename> <!--  this here is the first part of your getModel() call -->
            <class>Packagename_Modulename_Model</class>
            <resourceModel>modulename_mysql4</resourceModel>
        </modulename>
        <modulename_mysql4>
            <class>Packagename_Modulename_Model_Mysql4</class>
            <entities>
                <abc>
                    <table>table_abc</table>
                </abc>
            </entities>
        </modulename_mysql4>
    </models>

现在您需要第二部分 /. 。如果您的模型名称是: Packagename_Modulename_Model_Abc, ,然后您在前缀之后取得所有内容,该前缀已在配置中定义 Packagename_Modulename_Model, 第一个小写 特点

现在,您可以按照以下方式访问模型:

Mage::getModel('modulename/abc')->yourMethod();

如果该模型生活在模块的子文件夹中,则需要像以下方式一样加载它:

Mage::getModel('yourmodelname_as_defined_in_config/path_to_file_filename')

例子

加载 app/code/local/Aschroder/SMTPPro/Model/Email/Log.php

喜欢 Mage::getModel('smtppro/email_log');

许可以下: CC-BY-SA归因
scroll top