1

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

一些语言使用从右到左的布局和一些从左到右的布局。

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

我写了一个插件来检查用户是否是 RTL,如果是,它会在文件的后缀中添加 '.rtl': Zend_Controller_Action_HelperBroker::getExistingHelper('ViewRenderer')- >setViewSuffix('rtl.phtml');

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

如果我在我的控制器 $this->render('someScript') 中这样做,那么我无法检查 .rtl 脚本是否存在。据我所知。

简而言之:是否有某种方式(事件)在动作完成之后但在它呈现之前进行连接?

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

谢谢。

4

1 回答 1

0

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

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

于 2012-01-06T21:07:43.367 回答