簡體   English   中英

如何從Joomla子控制器傳遞數據到視圖?

[英]How to pass data from Joomla sub controller to view?

我已經看到很多例子將數據從Joomla控制器傳遞給視圖(例如這里 )。 但我需要將Joomla子控制器傳遞給特定的視圖文件(view.html.php)。 我搜索了一整天並沒有找到解決方案。 有誰知道如何做到這一點?

Joomla MVC非常松散,您可以通過多種方式實現此行為。 我認為這是在Joomla中實現MVC的最標准序列:

  1. 控制器讀取輸入並在會話變量中設置相關參數
  2. 控制器重定向到視圖
  3. 視圖加載模型
  4. 該模型從會話中讀取參數。

但你可以處理3中的參數並將它們傳遞給模型; 這真的是風格/品味的問題。 由於Joomla允許您使用$ this-> get('Data')從視圖中調用模型,因此沒有傳遞params的空間; 但是你可以選擇調用$ 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();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM