我想显示移动视图而不是普通视图脚本。
我们以此为例/ my_module / my_controller / my_action。
当我调用它时,根据一些标头处理,我知道用户代理是移动设备。
然后我将主要布局设置为特定于移动设备的布局。
我这样做,它工作正常:Zend_Layout::getMvcInstance()->setLayout('mobile');
但是在我的控制器或其他地方,我想覆盖my_action.phtml
之类的默认视图文件my_action_mobile.phtml
。
考虑到我在某些观点中使用动作助手,我可以做到这一点:<?php echo $this->action("index", "index", "items")?>
或者是我的一些行动我有这样的_forward:$this->_forward("index", "auth", "default");
我尝试使用setViewSuffix('mobile')
并使用多个文件名变体:my_action.mobile.phtml或setViewSuffix('mobile.phtml')
以及名为my_action.mobile.phtml和其他文件的文件,从而产生一个空白页面 - 没有错误,没有。 (我没有想法,因为它被设置为显示抛出的错误)
此外,我尝试过contextSwitching,但它禁用了我的主要布局 - 我不想要这个 - 而且感觉它没有正确处理动作视图帮助器。 (在另一个视图中呈现的视图)
我很感激任何苏打。谢谢!
答案 0 :(得分:2)
您可以使用它来更改控制器的视图
$this->render('actionName')
;
或者,您也可以通过调用直接调用视图脚本
$this->renderScript('path/to/viewscript.phtml')
;
您可以从here获取有关render()和renderScript()方法的更多详细信息 检查此SO帖子Assigning Values to Views when using $this->renderScript
答案 1 :(得分:2)
有很多关于这个问题的信息。首先让你自己完成http://static.zend.com/topics/Mobile-web-app-with-ZF.pdf
简而言之,您应该使用ContextSwitch。