0

我想显示移动视图而不是普通视图脚本。

让我们以这个动作/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 但它禁用了我的主布局 - 我不想要这个 - 感觉它不能正确处理动作视图助手。(在另一个视图中呈现)

我会很感激任何建议。谢谢!

4

2 回答 2

2

您可以使用它来更改控制器的视图
$this->render('actionName')

或者,您可以通过调用直接调用视图脚本 $this->renderScript('path/to/viewscript.phtml')

您可以从此处获取有关 render() 和 renderScript() 方法的更多详细信息。使用 $this->renderScript 时
也检查此 SO 帖子Assigning Values to Views

于 2012-12-09T12:44:10.997 回答
2

关于这个主题的信息非常多。对于初学者来说,请通过http://static.zend.com/topics/Mobile-web-app-with-ZF.pdf

简而言之,您应该使用 ContextSwitch。

  1. 您创建了一个插件,它定义了从 Zend_Http_UserAgent 派生的可用上下文和格式参数。
  2. 在控制器中,您描述了哪些操作符合这些上下文的条件。
  3. 为这些操作创建不同的视图。
于 2012-12-09T14:03:47.410 回答