当前位置: 首页 > 面试题库 >

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

林运浩
2023-03-14
问题内容

因为我想分离系统的前端和后端。我已经在控制器内部创建了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
.....

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

我检查了codeigniter中的路由功能,但据我所知,我需要分别指定每个路由。由于我大约有12个控制器,每个控制器都具有大约10
-15个功能,因此我可能必须指定该路由的每个功能。

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


问题答案:

做这个:

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

后端相同:

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

您不必为控制器的每个功能在routes.php中创建每个规则,而是如上所述,每个控制器一个规则就足够了。

URI路由:CodeIgniter用户指南

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

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



 类似资料:
  • 问题内容: 我想解析这样的简单路线: 在理论上对它们的数量没有限制。并从中获得一个数组会很好。 如何使用Express路由? 问题答案: 使用正则表达式。 运行它,然后

  • 问题内容: 我正在寻找一种将虚线控制器和方法名称路由到实际带下划线的控制器和方法名称的线路。 例如网址 将路由到 参见:http : //codeigniter.com/forums/viewreply/696690/,这使我想到了:) 问题答案: 这也正是我的要求,而且我使用了类似 在我之前的项目中,我需要创建300-400路由规则,其中大多数是由于短划线到下划线的转换。 对于我的下一个项目,我

  • 我有一个简单的Laravel项目。在路由中,我指定返回视图。现在我想另外得到直接在我的公共文件夹与图像,css等,通过添加更多的东西到链接让说将返回我我如何到达文件夹通过?

  • 问题内容: 我正在尝试建立一个视图-我设置了两个控制器进行练习,一个是HeaderCtrl,其中包含一些数据(网站标题,标题背景等),另一个应该具有页面的主要内容- MainCtrl。 在定义路线时,我这样做是: 这工作得很好,但是我想要为此指定多个参数,如下所示: 这行不通,所以我猜这不是做到这一点的方法。我实际上要问的是-您可以在$ routeProvider中指定多个控制器吗?还是构建此视图

  • 我有一个带有路由器插座的根应用程序组件,并且路由是从家庭模块路由加载的,该路由在其子路由中使用延迟加载和 loadchildren。家庭组件中有一个路由器插座,在家庭的所有子模块中也有延迟加载的路由器插座。路由工作正常,但子路由也加载到根路由器出口中。例如:- 组件“testCreateComponent”正在加载localhost:4200 / test/create和localhost:420

  • 问题内容: 我正在尝试将Socket.io与Node.js结合使用,并在路由逻辑内发送到套接字。 我有一个相当标准的Express 3安装程序,其中的server.js文件位于该路由中,然后我的index.js位于一个routes文件夹中,该文件夹导出站点的所有页面/公共可访问功能。因此,它们看起来像: 在server.js中定义的路由如下: 我假设我必须在server.js中创建socket.i