2

Je veux une vue pour appeler 2 modèles différents pour l'utilisation.Composant Joomla: une vue appelant plusieurs modèles?

Controller.php

class StatsController extends JController { 
    function display() 
    { 
     if(!JRequest::getVar('view')) { 
      JRequest::setVar('view', 'stats'); 
     } 
     parent::display(); 
    } 
    ... 
    ... 
} 

Statistiques Vue: (index.php? Option = com_stats & view = stats)

class StatsViewStats extends JView 
{ 
    function display($tpl = null) 
    { 
     $model_helpdesk = & JModel::getInstance('Helpdesk','StatsModel'); 
    //$model_chart = & JModel::getInstance('Chart','StatsModel'); 
    //$model_chart = &$this->getModel('Chart'); 
    var_dump($model_chart); 
    ... 
    ... 
     parent::display($tpl); 
    } 
} 

Problème: obtenir le modèle Helpdesk fonctionne très bien, mais obtenir le Chart modèle renvoie une page blanche, ou renvoie null dans var_d ump. Comment puis-je obtenir ce deuxième modèle pour l'utilisation (sans modifier le contrôleur) ??

Répondre

3

Dans votre contrôleur, vous devrez effectuer les opérations suivantes:

$view = &$this->getView('Stats', 'html'); 
$view->setModel($this->getModel('Stats'), true); 
$view->setModel($this->getModel('Chart')); 
$view->setModel($this->getModel('Helpdesk')); 
$view->display(); 

Ensuite, vous pouvez accéder à chaque modèle en utilisant les éléments suivants:

$chartModel = $this->getModel('Chart'); 
$helpdeskModel = $this->getModel('Helpdesk'); 

Source

+0

Désolé, mais je l'ai déjà vu ça et ça n'aide pas! J'ai juste besoin de garder la fonction d'affichage de mon contrôleur intacte afin que je puisse accéder à la vue directement via ** index.php? Option = com_stats & view = XXXX ** –

+0

Où dans le contrôleur devrait-il être? Dans quelle méthode? –

+0

OK, j'ai découvert. Il devrait être dans la méthode display() dans le Controller StatsController (dans ce cas). Merci :) –