Php 带有子页面的Kohana分层路由

Php 带有子页面的Kohana分层路由,php,frameworks,routing,kohana,Php,Frameworks,Routing,Kohana,我想在Kohana 3.0.9中设置某种层次路由。路由应支持页面和子页面,这些页面和子页面可能如下所示: 调用的URL:http://example.com/company/contact/ 可能的路线:(/(/) 上述路由的问题在于,它只支持具有两个级别的层次结构。如果站点需要能够处理像http://example.com/company/contact/sub,我必须改变路线 另外,我想要一个单页控制器来处理请求。例如,它可以接受company/contact/sub作为字符串参数。我知道键

我想在Kohana 3.0.9中设置某种层次路由。路由应支持页面和子页面,这些页面和子页面可能如下所示:

调用的URL:
http://example.com/company/contact/

可能的路线:
(/(/)

上述路由的问题在于,它只支持具有两个级别的层次结构。如果站点需要能够处理像
http://example.com/company/contact/sub
,我必须改变路线

另外,我想要一个单页控制器来处理请求。例如,它可以接受
company/contact/sub
作为字符串参数。我知道
键,我不打算使用它

有没有办法使路由与无限嵌套页面“兼容”


提前感谢您的回答。

如果您查看路由部分,您可以创建自定义正则表达式模式。 (请看这里)

默认情况下,路由“参数”会删除标点符号

您可以设置正则表达式以接受“/”

然后,您可以获取最后一个参数并使用 $pieces=爆炸(“/”,$pizza)

例如:

这应该会让你满意的

 $page_array = array ( [1] => 'contact',
                       [2] => 'subpage',
                       [3] => 'subsubpage')

看起来不错,但是正则表达式不起作用。我将其更改为
(.*)
,但不幸的是,操作被中断
page_Level
将包含@daniel的
bonjour/sub/doublesub/index
,您可以尝试(.*)或将操作硬编码到路由到((//my_ACTION)),然后在操作参数中将“ACTION”=>“my_ACTION”设置为硬编码。“我不知道你有多少不同的动作。@丹尼尔将你的路线改为跟随。路由::set('multilevel','(/)',array('page_levels'=>'.*)->默认值(array('controller'=>'welcome','action'=>'index',);不幸的是,仍然不起作用。我将尝试通过正则表达式排除该操作–可能使用类似于
(.*)/(index | edit)
。重要提示:我们都忘记了正则表达式仅用于检查它是否匹配url字符串–它永远不会修改或切断url的部分。我想我得破解科哈纳的消息来源。
$page_levels = Request::instance()->param('page_levels');
$page_array  = explode("/",$page_levels);
 $page_array = array ( [1] => 'contact',
                       [2] => 'subpage',
                       [3] => 'subsubpage')