Praveen Kumar
Praveen Kumar

Reputation: 89

Url Rewriting of once controller - cake 2.0

I'm developing a simple CMS in CakePHP, right now it has 4 controllers in it(Menus,Site,Roles,Users), I want to rewrite one controller, but I'm having problem.

I use all the actions only as admins for admin purpose like admin_view, admin_add...... except siteController(this controller is only for frontend purpose)

I need my www.example.com/site/view/something_here must be replaced to www.example.com/something_here - this will be displayed in front-end so.

I added a line in my routes file:

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

But after adding this I couldn't able to use other controllers.

I again added some more lines before the above line:

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

Same for all other controllers, but if I send any action or id in url it doesn't works. like - http://www.exmple.com/admin/menus/[view/1] - the one inside square bracket doesn't works.

any Ideas on rewriting this?

Upvotes: 1

Views: 612

Answers (1)

daniel.auener
daniel.auener

Reputation: 1294

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));

Upvotes: 1

Related Questions