我只是Zend Framework的新手。目前我正在尝试做的是当用户访问我的网站时 他们将首先看到一个选择框,其中包含两种语言,如英语和德语。
只有当他们做出选择时,浏览器才会将它们重定向到该特定语言页面的索引控制器。
所以我的问题是如何在bootstrap文件中创建一个选择框或任何可能的方法来执行此操作以及如何在此之后重定向用户?任何解决方案将不胜感激!
答案 0 :(得分:0)
您可以创建一个使用preDispatch事件的插件来查看是否已选择该语言(例如存储在Cookie或会话中),如果没有,则重定向到目标网页。
看这里zend framework plug-in - predispatch() 以及ZF的动作插件文档。
这就是我强行登录我的应用程序。
现在,在我的位置上,我真正要做的就是检测用户的语言,并在导航栏中的某个地方使用英语和切换小工具。
答案 1 :(得分:0)
对于这种操作,不要使用bootstrap文件(我正在讨论Bootstrap.php
和index.php
)。首先,它不会按你要求的方式工作;第二,你会把应用程序的结构搞得一团糟。
相反,您可以使用以下方法之一:
1)添加一些predispatch挂钩,通过检查用户的cookie来检查是否已经做出选择。如果是,请像往常一样继续处理请求(可能会设置一些Zend_Registry lang
变量以便稍后使用),如果没有,则重定向语言选择页面;后者应该存储cookie中的选择。
2)在您的Router / mod_rewrite中实现一个简单的规则:当请求的URL包含“语言部分”(http://example.com/lang/xx/...
或仅http://example.com/xx/...
)时,它会自动使用此部分,因此设置{{ 1}} param。如果没有,请求将自动重定向到语言选择页面。反过来,后者将用户引导到特定于语言的页面,其中所有链接都是特定于语言的。
在我看来,后一种方法较差,因为用户必须始终使用语言调整的网关。但您不必将此信息存储在cookie中。