我已经看到了许多将数据从 Joomla 控制器传递到视图的示例(例如这里)。但我需要将 Joomla 子控制器传递给特定的视图文件(view.html.php)。我搜索了一整天,但没有找到解决方案。有谁知道如何做到这一点?
问问题
3853 次
1 回答
4
Joomla MVC 非常松散,您可以通过多种方式实现此行为。我认为这是在 Joomla 中实现 MVC 的最标准顺序:
- 控制器读取输入并在会话变量中设置相关参数
- 控制器重定向到视图
- 视图加载模型
- 模型从会话中读取参数。
但是您可以处理 3. 中的参数并将它们传递给模型;这真的是风格/品味的问题。由于 Joomla 允许您从视图中调用模型,例如 $this->get('Data'),因此没有传递参数的空间;但是,您可以选择调用 $model->getData2($param1,$param2)。
基本调用是:
JApplication::getUserStateFromRequest()
在单个调用中读取输入并回退到先前保存的会话数据;
setUserState将此信息保存在会话中,而 getUserState用于在模型中检索数据。
但是,您可以简单地重定向传递 url 中的参数;然后使用 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();
}
于 2013-08-10T07:33:19.250 回答