簡體   English   中英

使用帶有Codeigniter的自定義命名控制器

[英]Using custom named controllers with codeigniter

嗨,我正在開發一個使用管理環境和用戶環境的應用程序。 為了使我的代碼和控制器更具可讀性,我想為我的管理員和用戶控制器使用某種前綴。 或者,可以為管理員用戶控制器使用其他目錄。 無需在URL中使用確切的名稱來調用控制器。

有人知道是否有辦法做到這一點或解決我的想法。 例如,我想使用:user。[controllername] .php或user_ [controllername] .php

編輯:

因此,當我使用路由將用戶控制器與管理控制器分開時,它會制動我的模板解析器。

例如,假設url為: http : //myapplication.com/user/profile在正常情況下,這將調用用戶控制器和功能配置文件。 我的模板解析器查找文件夾用戶,並檢查是否存在一個level1.tpl文件。 假設我們要編輯此配置文件,URL為: http ://myapplication.com/user/profile/edit/1現在,它將在文件夾用戶中搜索level2.tpl文件,並使用id調用函數edit 1。

路由的問題在於,它會將某些內容添加到我不想要的url女巫中,因為它然后在錯誤的文件夾中進行搜索,例如,當我們使用admin / dashboard時,它將查找文件夾admin而不是文件夾儀表板。

在此處輸入圖片說明

因此,基本上,我只需要告訴應用程序使用控制器所在的其他目錄或基於哪種用戶登錄的不同文件名即可。

在此先感謝您分享知識。

您可以通過多種方式做到這一點。

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邏輯來執行所需的任何操作,只需將Controllers擴展為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';

我希望這可以給您一些想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM