我正在开发一个多语言网站。
有些语言使用从右到左的布局,有些使用从左到右的布局。
所以我的一些视图脚本有另一个我想自动加载的RTL视图脚本。
我编写了一个插件,用于检查用户是否为RTL,如果是,则将“.rtl”添加到文件的后缀: Zend_Controller_Action_HelperBroker :: getExistingHelper('ViewRenderer') - > setViewSuffix('rtl.phtml');
问题是我的所有视图脚本都没有rtl视图脚本,所以我想检查文件是否存在....
问题是,如果我在我的控制器$ this->渲染('someScript'),那么我无法检查.rtl脚本是否存在..据我所知。
简而言之:在动作完成之后但在呈现之前是否有某种方式(事件)可以挂钩?
也许我应该编写自定义视图渲染器?
感谢。
答案 0 :(得分:0)
如果RTL检查只能在执行操作后发生,您可以创建一个动作帮助程序,它使用postDispatch
挂钩通过ViewRenderer设置viewSuffix并检索视图脚本的路径。使用视图scriptPath和viewRenderer getViewScript(),可以创建文件的绝对路径。
但是,这并不是实现目标的特别好方法。
创建两个scriptPath可能是一个想法,一个用于LTR,另一个用于RTL。当用户使用RTL语言时,您可以将RTL scriptPath添加到视图scriptPath堆栈。这样,Zend_View将首先检查RTL目录并使用LTR目录作为后备。