2011-01-22 11 views
0

私はKohana 3.0.9で何らかの種類の階層的ルーティングを設定したいと考えています。呼ばれるサブページを含むKohana階層ルート

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

可能なルート:ルーティングがこのような何かを見て可能性があり、ページとサブページをサポートする必要があります<page>(/<subpage>(/<action>))

上記のルートの問題は、それが唯一の階層をサポートしていることです2つのレベルで。サイトがhttp://example.com/company/contact/subのような「サブサブページ」を扱えるようにする必要がある場合は、ルートを変更する必要があります。

また、1つのページコントローラでリクエストを処理したいと思います。たとえば、文字列パラメータとしてcompany/contact/subを受け入れることができます。私は<directory>キーを認識しており、使用するつもりはありません。

無制限のネストされたページとルートを「互換」する方法はありますか?

ご回答いただきありがとうございます。

答えて

1

ROUTINGセクションを見ると、カスタムREGEXパターンを作成できます。 (ここをクリック)http://kohanaframework.org/guide/kohana/routing

デフォルトでは、「パラメータ」をルーティングすると句読点が削除されます。

"/"を受け入れるように正規表現を設定できます。

次に、最後のパラメータを取得し、 $ pieces = explode( "/"、$ pizza)でそれを爆発させることができます。

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

​​

Doublecheck 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') 
+0

に取得する必要がよさそうだ、しかし、正規表現は動作しませんでした。私はそれを '。* 'に変更しましたが、残念ながらアクションは中断されます。 'page_levels'はhttp:// localhost/kohana/page/bonjour/sub/doublesub/indexの' bonjour/sub/doublesub/index'を含みます。 – Daniel

+1

@ダニエルの場合、((/ /my_action))にルーティングしてから、アクションパラメータに「action」=>「my_action」をハードコードに設定することができます。あなたが持っているアクションの数がわからない。 – zerojarvis

+0

@danielはあなたのROUTEをフォローするように変更します。 ルート::セット( 'マルチレベル'、 '((/ /))' 、アレイ( 'page_levels' =>)」* ') - >デフォルト(配列( 'コントローラ'=>' 'welcome'、 'action' => 'index'、 )); – zerojarvis