Routing controllers in subfolders using CodeIgniter

﹥>﹥吖頭↗ 提交于 2019-11-26 11:28:56

问题


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)


回答1:


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.




回答2:


You have to be able to differentiate the frontend from the backend somehow. Maybe set a route that forwards any uri with "admin" to the backend, and anything without "admin" to the frontend.




回答3:


For Front-End you can add this in routes.php:

$this->set_directory( "frontend" );

so in browser URL, there is no need to include "frontend"



来源:https://stackoverflow.com/questions/13955335/routing-controllers-in-subfolders-using-codeigniter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!