Как использовать две модели в одном представлении - Joomla 3

Я хочу создать компонент на основе com_weblinks.

Этот компонент будет отображать категории и ссылки на одной странице.

В 3.0 я не понимаю, как я могу использовать 2 модели (модели категорий и модель ссылок) в одном представлении.


person ptenchik0    schedule 28.01.2013    source источник


Ответы (1)


Первый подход

Я сделал это, изменив контроллер следующим образом (это контроллер для пользователя)

function doThis(){ // the action in the controller "user" 
    // We will add a second model "bills"
    $model = $this->getModel ( 'user' ); // get first model
    $view  = $this->getView  ( 'user', 'html'  ); // get view we want to use
    $view->setModel( $model, true );  // true is for the default model  
    $billsModel = &$this->getModel ( 'bills' ); // get second model     
    $view->setModel( $billsModel );             
    $view->display(); // now our view has both models at hand           
}

В представлении вы можете просто выполнять свои операции с моделями.

function display($tpl = null){              
    $userModel = &$this->getModel(); // get default model
    $billsModel = &$this->getModel('bills'); // get second model

    // do something nice with the models

    parent::display($tpl); // now display the layout            
}

Альтернативный подход

В представлении напрямую загрузите модель:

function display($tpl = null){
 // assuming the model's class is MycomponentModelBills 
 // second paramater is the model prefix    
        $actionsModel = JModel::getInstance('bills', 'MycomponentModel'); 
}
person Rakesh Sharma    schedule 28.01.2013
comment
удалите & из альтернативного подхода;) - person Lodder; 28.01.2013
comment
для Альтернативы в 3.0 будет правильным JModelLegacy::getInstance($type, $prefix = '', $config = array()). Но все равно спасибо - person ptenchik0; 02.02.2013