Gọi nhiều model trong cùng view

Trong quá trình phát triển ứng dụng trên nền Joomla, chúng ta không ít thì nhiều cũng gặp trường hợp gọi model A trong view B. Nếu trong view B gọi model B thì vấn đề rất đơn giản. Để gọi được model A, B, C trong view A, chúng ta cần phải ghi đè hàm display trong controller của view A.
Ví dụ mẫu:

defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.controller');
class MyControllerStory extends JController {
  function __construct($config = array())
  {
    parent::__construct($config);
  }
  function display()
  {
    $name = JRequest::getVar('view', 'story');
    $layout = JRequest::getVar('layout', 'default');
    $document = &JFactory::getDocument();
    $type = $document->getType();

    //Get/Create the view
    $view = &$this->getView( $name, $type);

    // Get story model
    if ($model = &$this->getModel($name)) {
      $model->increaseView();

      // Push the model into the view (as default)
      $view->setModel($model, true);
    }
    if ($model = &$this->getModel('authors')) {
      $view->setModel($model, true);
    }
    if ($model = &$this->getModel('characters')) {
      $view->setModel($model, true);
    }
    if ($model = &$this->getModel('comment')) {
      $view->setModel($model, true);
    }
    if ($model = &$this->getModel('comments')) {
      $view->setModel($model, true);
    }

    // Set the layout
    $view->setLayout($layout);
    $view->display();
  }
}

4 comments

Leave a Reply

Your email address will not be published. Required fields are marked *