如何在joomla MVC组件中使用多个模型

时间:2011-08-23 10:22:41

标签: joomla joomla-extensions joomla-component

我在joomla中使用不同的模型,而不是通过从控制器中分配它来查看与其名称相似的自己的模型,如:

         $view->setModel($this->getModel('user'));

现在我如何在视图中使用其方法getSingleUser($ user_id)。在joomla文档中的一个例子中,它使用的是这样的东西:

$this->get("data1","model2");

所以我假设data1是model2中方法的名称?如果是这样,那么如何在我的情况下传递userid的参数。我知道很多joomla开发人员都做过这件事很容易,但我有点像各种开发人员和joomla的新人,所以我希望你们能告诉我。

1 个答案:

答案 0 :(得分:9)

第一种方法

我通过如下修改控制器来做到这一点(这是用户的控制器)

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'); 
}