Как инициализировать пользовательскую модель joomla 2.5?
Хорошо, поэтому я следовал учебнику joomla 2.5 здесь, и мне удалось сделать не неисправный исходный компонент.
Но мне интересно, как импортировать дополнительные классы в фреймворк?
У меня есть класс модели под названием auth.РНР
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import Joomla modelitem library
jimport('joomla.application.component.modelitem');
/**
* Auth Model
*/
class AutoBaseModelAuth extends JModelItem
{
function detail()
{
echo "this is test";
}
}
Расположенный в C:/xampp/htdocs/com_autobase/model/auth.РНР
(источник: iforce.co.nz )
И мой взгляд...
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import Joomla view library
jimport('joomla.application.component.view');
/**
* HTML View class for the AutoBase Component
*/
class AutoBaseViewAutoBase extends JView
{
// Overwriting JView display method
function display($tpl = null)
{
$db =& JFactory::getDBO();
//request the auth model
$model =& $this->getModel('auth');
$items =& $model->detail();
}
}
Но я продолжаю получать эту ошибку неосознанно, потому что она еще не была импортирована... и я был на 5 разных сайтах, пытаясь узнать, как Joomla импортирует новые модели .
Notice: Undefined index: auth in C:\xampp\htdocs\libraries\joomla\application\component\view.php on line 413
Так может кто-нибудь объяснить, как инициализируются модели в joomla? и что я делаю неправильно.. Спасибо!


Ответы - Как инициализировать пользовательскую модель joomla 2.5? / How do I initialize my custom joomla 2.5 model?

20.06.2012 05:03:14
У нас обычно есть эта статическая функция в помощнике, который мы включаем во все наши компоненты
public static function getModel($name, $component_name = null, $config = array()) {
//Use default configured component unless other component name supplied
if(!$component_name) {
$component_name = self::$com_name;
}
jimport('joomla.application.component.model');
$modelFile = JPATH_SITE . DS . 'components' . DS . $component_name . DS . 'models' . DS . $name.'.php';
$adminModelFile = JPATH_ADMINISTRATOR . DS . 'components' . DS . $component_name . DS . 'models' . DS . $name.'.php';
if (file_exists($modelFile)) {
require_once($modelFile);
} elseif (file_exists($adminModelFile)) {
require_once($adminModelFile);
} else {
JModel::addIncludePath(JPATH_SITE . DS . 'components' . DS . $component_name . DS . 'models');
}
//Get the right model prefix, e.g. UserModel for com_user
$model_name = str_replace('com_', '', $component_name);
$model_name = ucfirst($model_name).'Model';
$model = JModel::getInstance($name, $model_name, $config);
return $model;
}
Затем вы можете получить модель в любом месте, перейдя
$model = helper::getModel('Name', 'ComponentName');