Zend Framework子域问题

时间:2009-10-20 03:24:06

标签: php zend-framework subdomain

我正在使用.ini文件在我的应用程序中添加路由。

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 url它的工作原理。请求参数

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

#2 url它不起作用。请求参数

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

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

3 个答案:

答案 0 :(得分:0)

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

最终我必须通过在自定义插件的routshutdown中手动设置默认语言来破解它,如果有帮助请查看我的帖子

Zend Framework: Zend_translate and routing related issue

答案 1 :(得分: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',
)

答案 2 :(得分:0)

看起来路线已重置为默认值。

之前我遇到过

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

设置语言参数或模块名称
$router = $fc->getRouter();
$router->setGlobalParam('lang','somelanguage');
$router->setGlobalParam('module','somemodule');

看看你是否能带回正确的路线。