我只是 Zend 框架的新手。目前我正在尝试做的是,当用户访问我的网站时,他们首先会看到一个选择框,其中有两种语言可供选择,例如英语和德语。
只有当他们做出选择时,浏览器才会将他们重定向到该特定语言页面的索引控制器。
所以我的问题是如何在引导文件中创建一个选择框或任何可能的方法来做到这一点,以及之后如何重定向用户?任何解决方案将不胜感激!
我只是 Zend 框架的新手。目前我正在尝试做的是,当用户访问我的网站时,他们首先会看到一个选择框,其中有两种语言可供选择,例如英语和德语。
只有当他们做出选择时,浏览器才会将他们重定向到该特定语言页面的索引控制器。
所以我的问题是如何在引导文件中创建一个选择框或任何可能的方法来做到这一点,以及之后如何重定向用户?任何解决方案将不胜感激!
您可以制作一个使用 preDispatch 事件的插件来查看是否选择了语言(例如存储在 cookie 或会话中),如果没有,则重定向到登录页面。
看这里zend 框架插件 - predispatch() 和 ZF 的动作插件文档。
这就是我在我的应用程序中强制登录的方法。
现在,在您的位置上,我真正要做的是检测用户的语言,并在导航栏中的某个位置使用回退到英语和切换小部件。
永远不要使用引导文件(我说的是Bootstrap.php
and index.php
)进行这种操作。首先,它不会按照您的要求工作;其次,你会弄乱你的应用程序的结构。
相反,您可以使用以下方法之一:
1) 添加一些 predispatch 钩子,通过检查用户的 cookie 来检查是否已经做出了选择。如果是,像往常一样继续请求(可能设置一些 Zend_Registrylang
变量以供以后使用),如果不是,重定向到语言选择页面;后者应将所做的选择存储在 cookie 中。
2)在你的Router/mod_rewrite中实现一个简单的规则:当请求的URL包含“语言部分”(http://example.com/lang/xx/...
或只是http://example.com/xx/...
)时,它会自动使用这部分,所以设置lang
参数。如果没有,请求会自动重定向到语言选择页面。后者反过来将用户引导到特定语言的页面,其中所有链接都是特定于语言的。
在我看来,后一种方法较差,因为用户必须一直使用经过语言调整的网关。但您不必将此信息存储在 cookie 中。