使用Zend将多个URL段放在1个变量中

时间:2011-05-19 11:19:54

标签: php zend-framework routing

对于新应用程序,我想使用URI来确定应加载哪些内容。到目前为止没什么特别的......但是我怎么能让slug在其中有斜线并确保Zend Framework将它们视为1变量? ZF以块的形式拆分请求的URL,其中每个部分都是2个斜线之间的字符串。现在我想将1个变量中的所有部分都用到。

例如:

/de/my/page

de > language
my/page > 1 variable

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

来自Hari K的建议是最好的选择,但是如果你真的想保留斜线,你可以使用Zend_Controller_Router_Route_Regex来捕捉你的参数,你只需要找到一个好的正则表达式,一个简单的例子:

$routetotry = new Zend_Controller_Router_Route_Regex('([^/]+)/(.*)',
                    array(1 => 'de', 'controller' => 'someController', 'action' => 'someAction'),
                    array(1 => 'lang',2=>'my_variable_with_slash'),
                    '%s/%s'
);

$router->addRoute('routetotry', $routetotry);

答案 1 :(得分:1)

自定义路由器。最灵活的解决方案,但不是最简单的解决方案:(

答案 2 :(得分:0)

用您选择的其他值替换slug中的斜杠。

例如连字符( - )或下划线(_)。