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

4

我正在使用与视图自身模型不同的模型,通过从控制器分配类似于其名称的模型来实现,例如:

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

现在我如何在视图中使用它的getSingleUser($user_id)方法。在Joomla文档中的一个示例中,使用方式如下:

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

所以我假设data1是model2中的方法名称?如果是这样,那么我如何传递在我的情况下是userid的参数。我知道这是许多Joomla开发人员已经完成的简单事情,但我是各种开发人员的门外汉,对Joomla还很新,所以我希望你们告诉我。


你的标题并没有真正反映你的问题。你是想在一个视图中加载多个模型呢,还是尝试改变加载的模型? - udjamaflip
我正在尝试加载多个模型,并在视图中使用了与默认模型不同的模型。 - Hafiz
1个回答

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

你如何从该模型中获取一个变量?$this->var = $this->get('Msg');我该如何告诉它在哪里搜索getMsg函数? - ValRob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接