使用 CodeIgniter 的子文件夹中的路由控制器

2022-08-30 19:13:37

因为我想分离系统的前端和后端。我在控制器内创建了2个文件夹作为前端和后端

以下是我的控制器文件夹的结构

controller
 --frontend
   ---store.php
   ---processing.php
   ---profile.php
   ---authenticate.php
   ---register.php 

 --backend
   ---authenticate.php
   ---stats.php
   ---users.php
   ---property_manage.php
   ---register.php 

我可以使用以下命令访问函数

frontend/store/add
frontend/store/manage
......

backend/stats/sales
backend/stats/payments
.....

但我想从URL中删除前端和后端段。

我检查了codeigniter中的路由功能,但据我所知,我需要单独指定每个路由。由于我有大约12个控制器,每个控制器有大约10-15个函数,我可能必须将每个函数指定到路由。

有没有其他有效的方法来实现使用路由或任何其他方式?(不使用任何 htaccess)


答案 1

请执行下列操作:

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

后端相同:

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

您不必在路由中创建每个规则.php对于控制器的每个功能,如上所述,每个控制器一个规则就足够了。

URI 路由 : 代码标记用户指南

$1表示第一个表达式,这里是表达式,可以在每个规则上有多个表达式,而表达式表示为,以此类推。(:any)$1$2

同样,将匹配仅包含数字的句段,将匹配包含任何字符的句段,将匹配任何数字,将匹配任何字母文本。(:num)(:any)(\d+)([a-z]+)


答案 2

对于前端,可以在路由中添加以下内容.php:

$this->set_directory( "frontend" );

因此在浏览器URL中,无需包含“前端”


推荐