1

私は CakePHP で単純な CMS を開発しています。現在、4 つのコントローラー (メニュー、サイト、ロール、ユーザー) があり、1 つのコントローラーを書き直したいのですが、問題があります。

admin_view、admin_add などの管理目的でのみすべてのアクションを管理者として使用します... siteController を除く (このコントローラーはフロントエンド目的のみ)

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

ルート ファイルに次の行を追加しました。

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

しかし、これを追加した後、他のコントローラーを使用できなくなりました。

上記の行の前に、さらにいくつかの行を追加しました。

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

他のすべてのコントローラーでも同じですが、URL でアクションまたは ID を送信すると機能しません。のように - http://www.exmple.com/admin/menus/[view/1] - 角括弧内のものは機能しません。

これを書き直すアイデアはありますか?

4

1 に答える 1

1

I just answered a similar question on another thread.

To put the admin controller routes before the '/*'-route was the right idea, but the way you did it the router can't assign an action. You could use the following for each controller:

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

Or you could use the default prefix-routing routes, so you don't have to add a route for each new controller.

// 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));
于 2012-04-19T21:41:45.240 に答える