2012-04-16 16 views
1

私はCakePHPで簡単なCMSを開発していますが、今はコントローラが4つあります(メニュー、サイト、ロール、ユーザ)。コントローラを1つ書き直したいのですが問題がある。URL一度書き直しコントローラケーキ2.0

私は私www.example.com/が必要

(このコントローラは、唯一のフロントエンドの目的のためである)siteController以外 ...... admin_add、唯一admin_viewなどの管理目的で、管理者としてすべてのアクションを使用し

site/view/something_hereはwww.example.com/something_hereに置き換える必要があります。これはフロントエンドで表示されます。

私は私のroutesファイルに行を追加しました:

Router::connect('/*', array('controller' => 'site', 'action' => 'view')); 

しかし、これを追加した後、私は他のコントローラを使用することができませんでした。

は、私は再び上記の行の前にいくつかのより多くの行を追加:他のすべてのコントローラの

Router::connect('/admin/Menus/*', array('controller' => 'menus', 'prefix' => 'admin')); 

同じことを、私は、URLに任意のアクションまたはIDを送信する場合には、著作ません。 like - http://www.exmple.com/admin/menus/[view/1] - 角括弧の中にあるものは機能しません。

これを書き直すにはどうすればよいですか?

答えて

1

私はちょうどanother threadで同様の質問に答えました。

「/ *」ルートの前に管理コントローラのルートを置くことは正しいアイデアでしたが、それを行った方法ではルータはアクションを割り当てることができません。あなたは、各コントローラの次を使用することができます。

Router::connect('/admin/Menus/:action/*', array('controller' => 'menus', 'prefix' => 'admin')); 

それとも、それぞれの新しいコントローラのルートを追加する必要はありませんので、あなたは、default prefix-routing routesを使用することができます。

// prefix routing default routes with admin prefix 
Router::connect("/admin/:controller", array('action' => 'index', 'prefix' => 'admin', 'admin' => true)); 
Router::connect("/admin/:controller/:action/*", array('prefix' => 'admin', 'admin' => true)); 
+0

ありがとう、私はそれを助けた。 –

+0

あなたの問題を解決した場合は、回答を受け入れてください。 –

関連する問題