在插件中设置查看脚本 - 检查是否存在?

时间:2011-12-05 09:23:47

标签: zend-framework zend-locale

我正在开发一个多语言网站。

有些语言使用从右到左的布局,有些使用从左到右的布局。

所以我的一些视图脚本有另一个我想自动加载的RTL视图脚本。

我编写了一个插件,用于检查用户是否为RTL,如果是,则将“.rtl”添加到文件的后缀:                 Zend_Controller_Action_HelperBroker :: getExistingHelper('ViewRenderer') - > setViewSuffix('rtl.phtml');

问题是我的所有视图脚本都没有rtl视图脚本,所以我想检查文件是否存在....

问题是,如果我在我的控制器$ this->渲染('someScript'),那么我无法检查.rtl脚本是否存在..据我所知。

简而言之:在动作完成之后但在呈现之前是否有某种方式(事件)可以挂钩?

也许我应该编写自定义视图渲染器?

感谢。

1 个答案:

答案 0 :(得分:0)

如果RTL检查只能在执行操作后发生,您可以创建一个动作帮助程序,它使用postDispatch挂钩通过ViewRenderer设置viewSuffix并检索视图脚本的路径。使用视图scriptPath和viewRenderer getViewScript(),可以创建文件的绝对路径。 但是,这并不是实现目标的特别好方法。

创建两个scriptPath可能是一个想法,一个用于LTR,另一个用于RTL。当用户使用RTL语言时,您可以将RTL scriptPath添加到视图scriptPath堆栈。这样,Zend_View将首先检查RTL目录并使用LTR目录作为后备。