使用Zend 1.9作为子域的语言

时间:2009-10-24 22:39:21

标签: zend-framework zend-controller-router

我正在玩Zend 1.9,并希望将语言参数作为子域名。

赞:http://en.site.com

是否可以在.htaccess中获取语言并将其设置为我可以在Zend中使用的环境变量?

达到我想要的最佳方式是什么?

- 添加 - :

我将此添加到我的routes.ini中:

[routes]

routes.lif.type = "Zend_Controller_Router_Route_Hostname"
routes.lif.route = ":language.domain.:tld"
routes.lif.reqs.language= "[a-z]{2}"
routes.lif.defaults.controller = "index"
routes.lif.defaults.action = "index"
routes.lif.defaults.language = "en"

; default
routes.lif.chains.default.type = "Zend_Controller_Router_Route"
routes.lif.chains.default.route = "/:controller/:action"
routes.lif.chains.default.defaults.controller = index
routes.lif.chains.default.defaults.action = index

; register
routes.lif.chains.register.type = "Zend_Controller_Router_Route"
routes.lif.chains.register.route = "/register"
routes.lif.chains.register.defaults.controller = "register"
routes.lif.chains.register.defaults.action = "newuser"

; details
routes.lif.chains.band.type = "Zend_Controller_Router_Route"
routes.lif.chains.band.route = "/details/:name"
routes.lif.chains.band.defaults.controller = "details"
routes.lif.chains.band.defaults.action = "getdetails"

如果我去:http://en.domain.com/details/joe,这项工作很顺利 但不幸的是,如果我删除子域:http://domain.com/details/joe默认操作未被调用,我得到了

消息:操作“joe”不存在且未被捕获在__call()

你有什么想法吗?

谢谢你们。

亨利

1 个答案:

答案 0 :(得分:2)

你很幸运 - 有一个Zend_Controller_Router_Route_Hostname可以用来代替这个目的。如果您想在域之后的部分中实现自定义路由,则需要查看Zend_Controller_Router_Route_Chain