Zend路由器无法正确确定params

时间:2011-12-15 10:52:31

标签: php regex zend-framework routing

我有以下代码:

$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 个答案:

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