2011-12-15 49 views
0

我有以下代码:Zend的路由器没有确定PARAMS正确

$routes = array(
    'twitter_output' => new Zend_Controller_Router_Route(
     'twitter/:username\.:format', 
     array('controller' => 'twitter', 'action' => 'index') 
    ) 
); 

基本上我想它来搭配:http://site.com/twitter/edu2004eu.json(除不仅JSON,也许XML和其他人也是如此)。

但是,当我打印我的请求对象,它给了我:

[_params:protected] => Array ([username\.:format] => edu2004eu.json) 

,但它应该说:

[_params:protected] => Array ([username] => edu2004eu, [format] => json) 

我不知道我在做什么错在这里。任何帮助,将不胜感激。

编辑:我试着用斜杠,而不是一个点(http://site.com/twitter/edu2004eu/json)相同,它似乎是工作,但我想点(要冷静像所有的API)

回答

1

我不认为标准路线类型设置为使用点作为分隔符。您可以改为使用正则表达式路线:

$routes = array(
    'twitter_output' => new Zend_Controller_Router_Route_Regex(
     'twitter/([\w]+)\.([\w]+)', 
     array('controller' => 'twitter', 'action' => 'index'), 
     array(1 => 'username', 2 => 'format'), 
     'twitter/%s.%s' 
    ) 
); 
+0

太棒了!非常感谢你,完美工作。 – 2011-12-15 14:31:11