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.