2009-10-20 84 views
0

我正在使用.ini文件在我的应用程序中添加路由。Zend Framework子域问题

resources.router.routes.username.type = "Zend_Controller_Router_Route_Hostname" 
resources.router.routes.username.route = ":username.example.com" 
resources.router.routes.username.defaults.module = "userinfo" 
resources.router.routes.username.chains.index.type = "Zend_Controller_Router_Route" 
resources.router.routes.username.chains.index.route = ":language/:controller/:action/*" 
resources.router.routes.username.chains.index.defaults.controller = "index" 
resources.router.routes.username.chains.index.defaults.action = "index" 

1) http://john.example.com/fr/controller/action 
2) http://john.example.com/fr/controller/action/id/10 

它的工作#1网址。请求参数

Request Parameters: 
array (
    'language' => 'fr', 
    'controller' => 'controller', 
    'action' => 'action', 
    'username' => 'john', 
    'module' => 'userinfo', 
) 

#2 url它不工作。请求参数

Request Parameters: 
array (
    'controller' => 'fr', 
    'action' => 'controller', 
    'module' => 'default', 
) 

任何人都可以为此提出解决方案。

+0

您使用的是Zend Framework的哪个版本?据我所知,路由链接存在一些问题... – 2009-10-20 08:36:45

+0

我使用1.9.4版本 – 2009-10-20 14:44:14

回答

0

您是否为路线设置了默认语言?通过说它不起作用,你能提供更多细节吗? 我遇到了一些类似的问题,Zend_navigation没有考虑到语言参数,并总是切换到我定义的默认语言lang。

最后我有一个自定义插件手动设置默认语言在routshutdown请参阅我的文章,如果有帮助

Zend Framework: Zend_translate and routing related issue

0
resources.router.routes.username.type = "Zend_Controller_Router_Route_Hostname" 
resources.router.routes.username.route = ":username.example.com" 
resources.router.routes.username.defaults.module = "userinfo" 
resources.router.routes.username.chains.index.type = "Zend_Controller_Router_Route" 
resources.router.routes.username.chains.index.route = ":language/:controller/:action/*" 
resources.router.routes.username.chains.index.defaults.controller = "index" 
resources.router.routes.username.chains.index.defaults.action = "index" 
resources.router.routes.username.chains.index.defaults.language = "en" 

我添加到默认语言参数航线乱砍它。但是这个网址不起作用

http://john.example.com/fr/controller/action/id/10 
Request Parameters: 
array (
    'controller' => 'fr', 
    'action' => 'controller', 
    'module' => 'default', 
) 
0

看起来路线已被重置为默认值。我碰到之前

创建一个插件并注册到前端控制器。定义dispatchLoopStartup()在那里尝试设置使用

$router = $fc->getRouter(); 
$router->setGlobalParam('lang','somelanguage'); 
$router->setGlobalParam('module','somemodule'); 

看看你是否可以带回正确的路线语言参数或模块名称。