2012-01-30 6 views
0

私はCakePHPで私のルートをつかまそうとしています。私はwwwのほぼすべての記事を読んでいますが、必要なものに近いものもありますが、他のものと組み合わせることで期待どおりの仕事ができません。また、ここではいくつかのルータLIB-Sを試してみましたが、同じCakePHPルータ(スラッグと言語を使用)

私は必要なものである:

URL内の両方の言語のパラメータとページのスラッグ。だから、:フロントエンド用

ディレクトリ '/' デフォルトの言語につながるはず、=>pagescontrollerslug =>home

/:LANG - 同じ上記と同じであるが選択された言語のもの

/:slug - controller =>pagesaction =>index、デフォルト言語で、:slugパラメータを渡す

/:langの/:ナメクジ - セットlangのパラメータを使用して上記と同じ

/:コントローラ/:ナメクジ -

/。 LANG /:コントローラ/:ナメクジ -

  • が、私はそれらのリンク内の任意のaction -sを必要といけないセットLANGパラメータを指定して、上記と同じ
管理パネル

/adminの

10 - 'コントローラ' => '設定'、 '作用' => 'インデックス'

/管理/:コントローラ/:アクション/ .. ...これはデフォルト

  • 管理URLで言語パラメータが不要ですが、アクションはindexアクション以外、存在

また、ビュー内でリンクを作成する必要がありますので、ルータはshouldとして動作する必要がありますか?

答えて

1
Router::connect("/admin", array('action' => 'index', 'controller' => 'settings', 'prefix' => 'admin', 'admin' => true)); 
    Router::connect("/admin/:controller", array('action' => 'index', 'prefix' => 'admin', 'admin' => true)); 
    Router::connect("/admin/:controller/:action/*", array('prefix' => 'admin', 'admin' => true)); 

    Router::connect("/:language/*", array('action' => 'home', 'controller' => 'pages')); 
    Router::connect("/:language/:controller", array('action' => 'index')); 
    Router::connect("/:language/:controller/*"); 

あなたはルートの第二セットを過ぎてコピーすることができますが、変更:それはスラグルートをロードし、その後検証しない場合は、言語を強打するために、あなたは、場合にそれを入れて、特定の言語を検証する必要があります。

+0

ありがとうございます。少しの編集作業で完璧です。しかし、変更言語リンクを作成する方法 これは動作しません: '$ this-> Html-> link(__( 'Lala'、true)、array_merge($ this-> passedArgs、array( 'language '=>' eng ')))); – user1018809

+0

何が出力されますか?それは動作するはずです。私は$ this-> passedArgsがあなたに必要なデータを与え、その配列を出力し、コントローラとアクションを渡しているかどうかを確かめていません。 –

+0

'$ this-> passedArgs'はスラグだけを渡していますが、他に何が使えますか? – user1018809

関連する問題