Introduction
In this blog we will learn about using a Joomla model outside the scope of a component. As you must be already knowing about JModelLegacy Class of Joomla which provides methods to get Model, but it has some limits as you cannot access all models using this JModelLegacy::getInstance( ).
Solution – Admin
To get all models of any component you have to create your own function, it is recommended to create a static helper function, as you may need to use the function at several places.
/** * Webkul Software. * * @category Webkul * @author Webkul * @copyright Copyright (c) 2010-2016 Webkul Software Private Limited (https://webkul.com) * @license https://store.webkul.com/license.html * * getModelAdmin function * * @param [String] $component name of component * @param string $name name of model * @param string $prefix * @return Object */ function getModelAdmin($component, $name = 'Custom', $prefix = 'CustomModel') { if (!isset($component)) { JFactory::getApplication()->enqueueMessage(JText::_("COM_ERROR_MSG"), 'error'); return false; } $path=JPATH_ADMINISTRATOR . '/components/'.$component.'/models/'; JModelLegacy::addIncludePath($path); require_once $path.strtolower($name).'.php'; $model = JModelLegacy::getInstance($name, $prefix); // If the model is not loaded then $model will get false if ($model == false) { $class=$prefix.$name; // initilize the model new $class(); $model = JModelLegacy::getInstance($name, $prefix); } return $model; }
For Site
A similar function for accessing site models:
/** * Webkul Software. * * @category Webkul * @author Webkul * @copyright Copyright (c) 2010-2016 Webkul Software Private Limited (https://webkul.com) * @license https://store.webkul.com/license.html * * * getModelSite function * * @param [String] $component name of component * @param string $name name of model * @param string $prefix * @return Object */ function getModelSite($component, $name = 'Custom', $prefix = 'CustomModel') { if (!isset($component)) { JFactory::getApplication()->enqueueMessage(JText::_("COM_ERROR_MSG"), 'error'); return false; } $path=JPATH_SITE . '/components/'.$component.'/models/'; JModelLegacy::addIncludePath($path); require_once $path.strtolower($name).'.php'; $model = JModelLegacy::getInstance($name, $prefix); // If the model is not loaded then $model will get false if ($model == false) { $class=$prefix.$name; // initilize the model new $class(); $model = JModelLegacy::getInstance($name, $prefix); } return $model; }
If you find this blog useful please like and share.
Current Product Version - 3
Supported Framework Version - 3
Be the first to comment.