如何初始化我的自定义joomla 2.5模型?

时间:2012-06-20 03:54:17

标签: php joomla undefined

好的,所以我一直在关注joomla 2.5教程here,并且我设法制作了一个无故障的初始组件。

但我想知道如何将额外的类导入框架?

我有一个名为 auth.php

的模型类
// 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.php

xampp http://iforce.co.nz/i/p5m1gjxh.jpx.png

我的观点......

// 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中初始化模型吗?我做错了什么..谢谢!

1 个答案:

答案 0 :(得分:6)

我们通常在包含在所有组件中的帮助程序中使用此静态函数

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