簡體   English   中英

重定向不同的視圖腳本

[英]redirect different view scripts

我想重定向到不同的視圖腳本,這取決於用戶可以填寫的搜索類型。

例如:用戶想要搜索一個人,而不是我想要使用匹配的視圖腳本的人(ansprechpartner)。 請看一下我的控制器動作的一部分:

 switch ($suche['suchtyp']) {
            case 1:            //Ansprechpartner
                $view = new ViewModel([
                   'ansprechpartner' => $this->ansprechpartnerTable->sucheAnsprechpartner($suche['suche']),
                        ]);
                $view->setTemplate('ansprechpartner/index');
                return $view;
                break;
            case 2:            //Mandant
                $view = new ViewModel([
                   'mandant' => $this->mandantTable->sucheMandant($suche['suche']),
                ]);
                $view->setTemplate('mandant/index');
                return $view;
                break;
            case 3:            //vertrag
                $view = new ViewModel([
                   'vertrag' => $this->vertragTable->sucheVertrag($suche['suche']),
                ]);
                $view->setTemplate('vertrag/index');
                return $view;
                break;

            default:
                return $this->redirect()->toRoute('index', ['action' => 'index']);
        }

在屏幕快照中,我的文件夾將顯示:

在此處輸入圖片說明

因此,在這種情況下,如何在不調用匹配控制器動作的情況下使用現有的視圖腳本?

我認為您應該在switch提供setTemplate完整模板路徑

    $view = new ViewModel([
                   'ansprechpartner' => $this->ansprechpartnerTable->sucheAnsprechpartner($suche['suche']),
                        ]);
   $view->setTemplate('stammdaten/ansprechpartner/index');
   return $view;

此開關應在“動作”中(在控制器中)。 這是永遠都不應忽視的邏輯。 但是,如果確實要執行此操作,則可以利用ZF 設置其他布局

鏈接示例:

// A controller's action method that uses an alternative
// layout template.
public function indexAction() 
{
  //...

  // Use the Layout plugin to access the ViewModel
  // object associated with layout template.
  $this->layout()->setTemplate('layout/layout2');

  //...
}

暫無
暫無

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

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