1

我已经看到了许多将数据从 Joomla 控制器传递到视图的示例(例如这里)。但我需要将 Joomla 子控制器传递给特定的视图文件(view.html.php)。我搜索了一整天,但没有找到解决方案。有谁知道如何做到这一点?

4

1 回答 1

4

Joomla MVC 非常松散,您可以通过多种方式实现此行为。我认为这是在 Joomla 中实现 MVC 的最标准顺序:

  1. 控制器读取输入并在会话变量中设置相关参数
  2. 控制器重定向到视图
  3. 视图加载模型
  4. 模型从会话中读取参数。

但是您可以处理 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 回答