2012-12-19 55 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,就沒有必要列入「前端」