我想根据用户可以填写的搜索类型重定向到不同的视图脚本。
例如:用户想要搜索一个人,而不是我想要使用与人匹配的视图脚本(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']);
}
在屏幕快照中,我的文件夹将显示:
在这种情况下,如何在不调用匹配控制器动作的情况下使用现有的视图脚本?
答案 0 :(得分:2)
我认为您应该在setTemplate
中提供指向switch
的完整模板路径
$view = new ViewModel([
'ansprechpartner' => $this->ansprechpartnerTable->sucheAnsprechpartner($suche['suche']),
]);
$view->setTemplate('stammdaten/ansprechpartner/index');
return $view;
答案 1 :(得分:0)
此开关应该在Action(在控制器中)中。这是永远都不应忽视的逻辑。但是,如果您确实要在某项操作中使用它,则可以利用ZF来set a different layout
链接示例:
// 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');
//...
}