Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Routing controllers in subfolders using CodeIgniter

Tags:

since i want to separate the frontend and backend of the system. i have created 2 folders inside controllers as frontend and backend

Below is the structure of my controller folder

controller  --frontend    ---store.php    ---processing.php    ---profile.php    ---authenticate.php    ---register.php    --backend    ---authenticate.php    ---stats.php    ---users.php    ---property_manage.php    ---register.php  

i can access the functions by using

frontend/store/add frontend/store/manage ......  backend/stats/sales backend/stats/payments ..... 

but i want to take off the frontend and the backend segments from the url.

I checked the routing feature in codeigniter but according to my knowledge i need to individually specify each route. Since i have about 12 controllers and each has around 10 -15 functions i might have to specify each and every function to the route.

is there any other efficient way to achieve using routing or any other way? (without using any htaccess)

like image 218
LiveEn Avatar asked Dec 19 '12 15:12

LiveEn


1 Answers

Do this:

$route['store/(:any)'] = 'frontend/store/$1'; $route['processing/(:any)'] = 'frontend/processing/$1'; $route['profile/(:any)'] = 'frontend/profile/$1'; 

Same for backend :

$route['backend/(:any)'] = 'backend/authenticate/$1'; 

You don't have to create each rule in routes.php for every function of the controller, rather one rule per controller will be enough as mentioned above.

URI Routing : CodeIgniter User Guide

$1 represent the first expression, here (:any) is the expression, you can have multiple expression on each rule, and expression is represented as $1, $2 and so on on the other side.

Similarly, (:num) will match a segment containing only numbers, (:any) will match a segment containing any character, (\d+) will match any digit, ([a-z]+) will match any alpha text.

like image 181
hsuk Avatar answered Sep 19 '22 12:09

hsuk