ZF路由 - 带有第N个参数的扩展名的网址

时间:2011-05-20 14:30:17

标签: regex zend-framework zend-route

this question类似,我已经完成了使用url扩展名传递格式,但您必须声明预先传递的参数。例如:

new Zend_Controller_Router_Route_Regex(
        '([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)(\.(\w+))?',
        array(
            'module'        => 'Default',
            'controller'    => 'index',
            'action'        => 'index',
        ),
        array(
            1    => 'module',
            2    => 'controller',
            3    => 'action',
            4    => 'extension',
            5    => 'format'
        )
);

但是如果我想要/:module /:controller /:action / *:format ??? 所以无论我通过url传递多少参数,'.whatever'都将是格式参数?基本上,我正在尝试使用默认路由器并添加扩展名作为'格式参数'。

编辑:

问题不是抓住扩展,问题是增加其他参数。例如

/blogs/posts/view/post/500/foo/bar/format/html

将转化为:     array('module'=>'blogs','controller'=>'posts','action'=>'view','post'=> 500,'format'=>'html', 'foo'=>'bar');

但我希望能够像这样表示相同路线的格式:

/blogs/post/view/post/500/foo/bar.html

无论动作和格式之间声明了多少参数。

1 个答案:

答案 0 :(得分:0)

您可以使用whatever表达式指定.*

要匹配它 - 只需:(.*)

如果您不想抓取示例扩展程序,请使用?

(.*?)(\.(\w+))