在J!2.5 Tutorial中,视图中只加载了一个模型(默认模型)。来自J!1.5的snipplet不再与使用本教程中的技术一起工作。 这是我的延伸的turoial东西。 Controller.php这样
function display($cachable = false)
{
// set default view if not set
$input = JFactory::getApplication()->input;
JRequest::setVar('view', JRequest::getCmd('view', 'HelloWorlds'));
// We will add a second model "bills"
$model = $this->getModel ( 'helloworlds' ); // get first model
$view = $this->getView ( 'helloworlds', 'html' ); // get view we want to use
$view->setModel( $model, true ); // true is for the default model
$billsModel = &$this->getModel ( 'mycomponents' ); // get second model
$view->setModel( $billsModel );
// call parent behavior
parent::display($cachable);
}
这是我的看法。 视图/ helloworlds.view.hml.php
function display($tpl = null)
{
// Get data from the model
$model = $this->getModel();
$items = $this->get('Items');
$pagination = $this->get('Pagination');
$model2 = &$this->getModel('mycomponents');
$items2 = $model2->get('Items');
$pagination2 = $model2->get('Pagination');
// Check for errors.
if (count($errors = $this->get('Errors')))
{
JError::raiseError(500, implode('<br />', $errors));
return false;
}
// Assign data to the view
$this->items = $items;
$this->pagination = $pagination;
$this->items2 = $items2;
$this->pagination2 = $pagination2;
// Display the template
parent::display($tpl);
}
但不幸的是,没有加载model2。这里发生了什么? 是我在控制器中的错误?是否已在控制器中设置两个模型正确? 那个视图中的代码怎么样?我是否必须以这种方式加载模型(从J!1.5中获知)?
最诚挚的问候 的Björn
答案 0 :(得分:0)
我明白了。 解决方案是在控制器中注册您的模型(就像我之前一样)。
然后在视图中用
调用它 $items2 = $this->get('Items', 'MyComponents');
而不是
$items = $this->get('Items');
以下是我的完整视图来源:
function display($tpl = null)
{
// Get data from the model
$items = $this->get('Items');
$pagination = $this->get('Pagination');
$items2 = $this->get('Items', 'MyComponents');
$pagination2 = $this->get('Pagination', 'MyComponents');
// Check for errors.
if (count($errors = $this->get('Errors')))
{
JError::raiseError(500, implode('<br />', $errors));
return false;
}
// Assign data to the view
$this->items = $items;
$this->pagination = $pagination;
$this->items2 = $items2;
$this->pagination2 = $pagination2;
// Display the template
parent::display($tpl);
}