Magento llama a una función del modelo en el controlador
-
16-10-2019 - |
Pregunta
Tengo una función ABC en el modelo. Quiero llamar a esa función ABC en el controlador.
Soy nuevo en Magento y no tengo idea de esto. ¿Puede algún cuerpo decirme cómo hacer esto?
Solución
Se llama función mágica.
$yourModel = Mage::getModel('yourmodulename/yourmodelname')->load($id);
$return = $yourModel->abc();
o puedes hacer
$yourModel = Mage::getSingleton('yourmodulename/yourmodelname')->load($id);
$return = $yourModel->abc();
Esto es para su referencia de getSingleton vs getModel
Otros consejos
Puedes usar
Mage::getModel('modulename/modulename')->yourMethod();
Supongamos que quieres la categoría de catálogo entonces
Mage::getModel('catalog/category')->load($id);
Supongamos que su configuración es -
<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>
Ahora necesitas la segunda parte después del /
. Si el nombre de su modelo es: Packagename_Modulename_Model_Abc
, luego toma todo después de su prefijo, que se definió en la configuración Packagename_Modulename_Model
, minúscula el primero personaje
Ahora puede acceder a su modelo a continuación:
Mage::getModel('modulename/abc')->yourMethod();
Si el modelo vive en una subcarpeta de su módulo, debe cargarlo como:
Mage::getModel('yourmodelname_as_defined_in_config/path_to_file_filename')
Ejemplo
Carga app/code/local/Aschroder/SMTPPro/Model/Email/Log.php
me gusta Mage::getModel('smtppro/email_log');