与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
无论动作和格式之间声明了多少参数。
答案 0 :(得分:0)
您可以使用whatever
表达式指定.*
。
要匹配它 - 只需:(.*)
如果您不想抓取示例扩展程序,请使用?
:
(.*?)(\.(\w+))