我怎样才能在joomla中加载模型?

时间:2011-03-22 04:36:41

标签: module joomla

这是我的控制器

// No direct access

defined( '_JEXEC' ) or die( 'Restricted access' );

jimport('joomla.application.component.controller');

/**
 * Hello World Component Controller
 *
 * @package    Joomla.Tutorials
 * @subpackage Components
 */
class HelloController extends JController
{
    /**
     * Method to display the view
     *
     * @access    public
     */

    function __construct($default = array())
    {
        parent::__construct($default);

        // Register Extra tasks
        $this->registerTask( 'detail'  ,        'display' );
    }
    function display()
    {
     switch($this->getTask())
      {
        case 'detail'     :
        {
             JRequest::setVar( 'view'  , 'new');

        // Checkout the weblink
             $model = $this->getModel('hello');

        } break;

    }
    parent::display();
    }


}

这是我的view.html.php

class HelloViewNew extends JView
{
    function display($tpl = null)
    {   
    global $mainframe;

    $db     =& JFactory::getDBO();

    $model  =& $this->getModel('hello');

    $items      = & $model->getdetail();

    $this->assignRef( 'items', $items );

    parent::display($tpl);
    }

}

这是我的模特

defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.application.component.model' );

/**
 * Hello Model
 *
 * @package    Joomla.Tutorials
 * @subpackage Components
 */
class HelloModelHello extends JModel
{
    /**
    * Gets the greeting
    * @return string The greeting to be displayed to the user
    */
    var $_data;

    /**
     * Returns the query
     * @return string The query to be used to retrieve the rows from the database
     */
    function _buildQuery()
    {
    $query = ' SELECT * '
        . ' FROM #__hello WHERE published = 1'
    ;

    return $query;
    }

    /**
     * Retrieves the hello data
     * @return array Array of objects containing the data from the database
     */
    function getData()
    {
    // Lets load the data if it doesn't already exist
    if (empty( $this->_data ))
    {
        $query = $this->_buildQuery();
        $this->_data = $this->_getList( $query );
    }
    //echo "<pre>"; print_r($this->_data); exit;
    return $this->_data;
    }
    function detail()
    {   
    echo "this is test"; exit;
    }

}

我的问题是如何从数据库中获取该详细信息功能?这对我不起作用?

2 个答案:

答案 0 :(得分:1)

在您的模型上,您具有以下功能:function detail(), 但是你试图在视图上调用函数:$items = & $model->getdetail(); 请记住,您的功能是detail() NOT getdetail()。所以,请致电:

$items = & $model->detail();

这是你唯一的错误,我想是这样,祝你好运

答案 1 :(得分:0)

你应该在控制器中使用它

$view = $this->getView();
$view->setModel($this->getModel());

然后您可以在视图中使用$this->getModel()