Kohana分层路由与子页面

时间:2011-01-22 17:42:16

标签: php frameworks routing kohana

我想在Kohana 3.0.9中设置某种分层路由。路由应该支持页面和子页面,看起来像这样:

名为http://example.com/company/contact/

的网址

可能的路线:<page>(/<subpage>(/<action>))

上述路线的问题在于它只支持具有两个级别的层次结构。如果网站需要能够处理像http://example.com/company/contact/sub这样的“子网页”,我将不得不改变路线。

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

有没有办法让路线与无限制的嵌套页面“兼容”?

提前感谢您的回答。

1 个答案:

答案 0 :(得分:1)

如果查看ROUTING部分,可以创建自定义REGEX模式。 (请阅读此处)http://kohanaframework.org/guide/kohana/routing

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

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

然后你可以抓住最后一个参数并将其爆炸 $ pieces = explode(“/”,$ pizza);

实施例: http://example.com/company/contact/subpage/subsubpage/action

Route::set('multilevel', '(<controller>(/<page_levels>/<action>))'
, array('page_levels' => '.*'))
    ->defaults(array(
        'controller' => 'page_controller',
        'action'     => 'index',
    ));

双重检查REGEX,但基本上它除了最后一个(应该是你的ACTION参数分隔符之外)抓取所有“/”。

ACTION_ [操作] 功能中(对于此示例,在 Controller_Contact 中), 然后你会打电话给

$page_levels = Request::instance()->param('page_levels');
$page_array  = explode("/",$page_levels);

这应该可以帮到你

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