2011-01-22 87 views
0

我想在Kohana 3.0.9中設置某種分層路由。路由應該支持頁面和子頁面,這可能是這個樣子:Kohana分層路由與子頁面

URL稱爲:http://example.com/company/contact/

可能途徑:<page>(/<subpage>(/<action>))

與上述路線的問題是,它僅支持一個層次有兩個層次。如果該網站需要能夠處理像「http://example.com/company/contact/sub」這樣的「子子頁面」,我將不得不改變路線。

此外,我想單個頁面控制器來處理請求。例如,它可以接受company/contact/sub作爲字符串參數。我知道<directory>的關鍵,我不打算使用它。

有什麼辦法讓路線與無限的嵌套頁面「兼容」嗎?

在此先感謝您的答案。

回答

1

如果你看看ROUTING部分,你可以創建自定義的REGEX模式。 (閱讀此處)http://kohanaframework.org/guide/kohana/routing

默認情況下,路由「參數」將刪除標點符號。

你可以設置一個正則表達式來接受「/」。

然後你可以抓住最後一個參數並用 爆炸它$ pieces = explode(「/」,$ pizza);

例子: http://example.com/company/contact/subpage/subsubpage/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') 
+0

看起來不錯,但是正則表達式沒有工作。我將它改爲`(。*)`,但不幸的是這個動作被切斷了。對於http:// localhost/kohana/page/bonjour/sub/doublesub/index,`page_levels`將包含`bonjour/sub/doublesub/index`。 – Daniel 2011-01-22 18:58:31