Вопрос

У меня есть функция ABC в модели. Я хочу назвать эту функцию ABC в контроллере.

Я новичок в Magento, и у DNT есть какие -либо идеи по этому поводу. Может ли любое тело сказать мне, как это сделать

Это было полезно?

Решение

Это называется магическая функция.

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

$return = $yourModel->abc();

Или вы можете сделать

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

$return = $yourModel->abc();

Это для вашей ссылки Гетринглтон против 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 с атрибуция
Не связан с magento.stackexchange
scroll top