Две модели в одном вью (two models in one view)

Обычно, стандартная модель подключается автоматически и имеет одинаковое имя с контроллером, ну или задаётся в нём.

Что делать когда в одном view нужно использовать функции из другой(их) модели(ей)?

Всё просто:

 

$model = & JModel::getInstance('Category','MycompModel');
	$res = $model -> modelfunction();

 

Вот так выглядит пример view.html.php c 2 подключёнными моделями

<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.view');
/**
 * HTML View class for the Component
 */
class MycomponentViewMycompfrontpage extends JView
{
    protected $state = null;
    protected $item = null;
    protected $pagination = null;
    
       function display($tpl = null)
        {         
            $this->state        = $this->get('State'); // используется фенкция дефолтной модели getState();
            $this->items        = $items = $this->get('Items'); //...
            $this->pagination    = $this->get('Pagination'); //...
                           
                $model = $this->getModel(); // используем дефолтную модель.
                $model->getCatBySec($items); // используем функции дефолтной модели.
              
           $other_model = & JModel::getInstance('Category','MycompModel'); // используем дополнительную модель. в данном случае category
           $this->res = $other_model -> modelfunction(); // используем функции дополнительной модели.
            if (count($errors = $this->get('Errors'))) { JError::raiseWarning(500, implode("\n", $errors));    return false;}
           
            parent::display($tpl);
        }
}
Scroll to Top
Ads: