2012-12-19 114 views
12

因为我想分开系统的前端和后端。我已经建立内部控制器作为前端和后端路由控制器在子文件夹 - codeigniter

下面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)

回答

18

这样做:

$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 Routing : CodeIgniter User Guide

$1表示第一表达,这里(:any)是表达式,就可以对每个规则多个表达,并表达被表示为$1$2等上的另一侧。

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

+0

感谢队友......伟大工程..所以我需要为每个控制器定义一个路由。你能告诉我$ 1代表什么? – LiveEn

+1

$ 1代表第一个表达式,这里(:any)是表达式,每个规则可以有多个表达式,表达式表示为$ 1,$ 2,另一方面 – hsuk

+2

(:num)将与包含只有号码, (:任何)将匹配包含任何字符的段, (\ d +)将匹配任何数字, ([az] +)将匹配任何字母文本 – hsuk

1

你必须能够以某种方式区分前端和后端。也许设置一个路由,将任何具有“admin”的uri转发到后端,并将任何没有“admin”的前转到前端。

0

为前端您可以添加这routes.php文件:

$this->set_directory("frontend"); 

所以在浏览器的URL,就没有必要列入“前端”