Magento вызовать функцию модели в контроллере
-
16-10-2019 - |
Вопрос
У меня есть функция 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');