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?

¿Fue útil?

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');

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top