2016-12-29 33 views
0

你好我正在使用一個管理環境和用戶環境的應用程序。爲了使我的代碼和控制器更具可讀性,我想爲我的管理員和用戶控制器使用某種前綴。或者爲admin en用戶控制器使用不同的目錄。不使用URL中的確切名稱來調用控制器。使用自定義命名的控制器,笨

有誰知道是否有一種方法來對我的觀念是幹這工作。 例如我想使用:用戶[controllername] .PHP或用戶_ [controllername] .PHP

編輯:

因此,當我使用路由到用戶控制器從管理控制器,它制動器分離我的模板解析器。

比如讓說的網址是:http://myapplication.com/user/profile在正常情況下,這將要求用戶控制器和功能配置文件。我的模板解析器查找文件夾用戶並檢查是否有一個level1.tpl文件。 假設我們要編輯這個配置文件的URL將是:http://myapplication.com/user/profile/edit/1現在它會在文件夾用戶中搜索level2.tpl文件,並會調用ID爲1的函數編輯。

路由的問題是它預先給了我不想要的網址,因爲那麼它會在錯誤的文件夾中搜索,例如當我們使用管理員/儀表板時,它會在文件夾管理員而不是文件夾儀表板中查找。

enter image description here

所以基本上我只需要僅僅是確定要使用不同的目錄,其中控制器位於或在記錄什麼樣的用戶提供不同的文件名的基礎應用。

謝謝提前分享你的知識。

+0

什麼只是使用路線? https://www.codeigniter.com/userguide3/general/routing.html – jcorry

+1

您還可以創建一個文件夾離開你的'admin'控制器從物理上'user'的人分開,如果你喜歡。當您訪問您的網址時'example.com/admin/dashboard'(說你刪除了'index.php'),Codeigniter會在名爲'admin'的文件夾中尋找'Dashboard'控制器。 – Hicaro

回答

2

你可以做,在許多方面。

1.創建兩個文件名爲 「Admin_Controller.php」 和 「User_Controller.php」 與下面的類簽名應用/核心,

class Admin_Controller extends CI_Controller 
{  
    public function __construct() 
    { 
     parent::__construct(); 
    } 
} 

class User_Controller extends CI_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 
} 

在這些類你可以使用你的PHP邏輯來做你想做的事情,只需簡單地將你的控制器擴展到Admin_Controller或User_Controller。 如:class Home extends User_Controller {}class Dashboard extends Admin_Controller {}

2.你也可以簡單地做到這一點與routes.php文件

如:

// for admin 
$route['admin/(.+)'] = 'admin_$1'; 

// for frontend 
$route['(.+)'] = 'user_$1'; 

我希望這可能會給你一些想法。

+0

也可以不預先額外的任何東西的網址? 我也使用自定義目錄爲我的模板incino與smarty工作只是罰款,但它也建立我的模板基於url結構,所以當我追加到url的應用程序查找模板文件的錯誤文件夾中的東西。 – Iason

+1

好吧,那麼你需要將每個可能的請求映射到其各自的控制器。例如:'/ home'會加載'Home controller','/ dashboard'會加載'Dashboard controller'等。爲此,只需用'MY_Controller.php'文件在應用程序/內核中創建一個新文件'MY_Controller extends CI_Controller {}'在這個類中簡單地使用'public function _remap(){}'方法,您可以在其中使用switch case來進行適當的類調用。除此之外,您還可以在路線文件中執行此操作。 – puncoz