我见过很多例子可以将数据从Joomla控制器传递给视图(例如here)。但我需要将Joomla子控制器传递给特定的视图文件(view.html.php)。我搜索了一整天并没有找到解决方案。有谁知道怎么做?
答案 0 :(得分:4)
Joomla MVC非常松散,您可以通过多种方式实现此行为。 我认为这是在Joomla中实现MVC最标准的序列:
但是你可以处理3中的参数并将它们传递给模型;这真的是风格/品味的问题。由于Joomla允许您使用$ this-> get('Data')从视图中调用模型,因此没有传递params的空间;但是你可以选择调用$ model-> getData2($ param1,$ param2)。
基本电话是:
JApplication::getUserStateFromRequest()
在单个调用中读取输入并返回先前保存的会话数据;
setUserState 在会话中保留此信息 getUserState 将在模型中用于检索数据。
然而,您可以简单地重定向传递网址中的参数;然后使用view.html.php解析输入并在调用方法($ model-> setState)之前设置模型的内部状态,或者完全避免重定向并从控制器加载模型和视图(这似乎更多MVC的标准和简单方法,但在Joomla中很少见。)
直接从控制器调用视图
$vName = 'yourview';
$vFormat = 'html'; // raw
if ($view = $this->getView($vName, $vFormat)) {
$model = $this->getModel($vName);
$model->setState('filter.type', $type);
$view->setModel($model, true);
// Push document object into the view.
$view->assignRef('document', $document);
$view->display();
}