我想在Kohana 3.0.9中设置某种分层路由。路由应该支持页面和子页面,看起来像这样:
名为http://example.com/company/contact/
可能的路线:<page>(/<subpage>(/<action>))
上述路线的问题在于它只支持具有两个级别的层次结构。如果网站需要能够处理像http://example.com/company/contact/sub
这样的“子网页”,我将不得不改变路线。
另外,我想要一个单页控制器来处理请求。例如,它可以接受company/contact/sub
作为字符串参数。我知道<directory>
密钥,我不打算使用它。
有没有办法让路线与无限制的嵌套页面“兼容”?
提前感谢您的回答。
答案 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')