簡體   English   中英

CodeIgniter HMVC用戶特定的模塊結構

[英]CodeIgniter HMVC user specific module structure

我正在使用CI-HMVC股票。 我想擁有這樣的模塊結構:

application
    modules
        userabc
            moduleA
                controllers
                models
                views
            moduleB
                ...
        userDEF
            moduleC
                ...

這是模塊組織的錯誤方法嗎? 是否有另一種常見的方式來做這樣的事情?

我想分開用戶模塊文件夾,並在如下所示的URL中使用它們:
userABC.domain.com/module/controller/method
userBCD.domain.com/module/controller/method

如果需要,可以使用該結構,但請注意以下幾點:

您必須將每個用戶的目錄定義為模塊位置:

// application/config/config.php
$config['modules_locations'] = array(
    // Absolute path              // Relative from default application dir
    APPPATH.'modules/userABC/' => '../modules/userABC/',
    APPPATH.'modules/userDEF/' => '../modules/userDEF/',
    APPPATH.'modules/userGHI/' => '../modules/userGHI/',
    // etc.
);

您也許可以動態地執行此操作,但是請記住config.php加載得很早,因此您可能需要pre_system hook

另一件事,如果要使所有用戶模塊都可訪問而無論哪個子域處於活動狀態,這一點都很重要: 順序很重要!

如果userA有一個名為“ blog”的模塊,而userB也有,則只會加載userA(假設您先定義userA的模塊路徑)。 如果您確定沒有兩個模塊會共享相同的名稱,那么這將無關緊要,但是您可能會遭受性能損失,因為加載程序將遍歷整個模塊位置,直到找到請求的模塊。

聽起來您應該根據加載的用戶站點(子域)定義一個module_location 就像是:

// Get this value dynamically (not sure how you need to do it)
$current_user = 'userABC';

$config['modules_locations'] = array(
    APPPATH.'modules/'.$current_user.'/' => '../modules/'.$current_user.'/'
);

在codeigniter中添加子模塊,您需要像這樣在配置文件中刪除模塊目錄。

$config['modules_locations'] = array(
APPPATH.'modules/'          => '../modules/backend/',
APPPATH.'modules/frontend/' => '../modules/frontend/', 
 );

暫無
暫無

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

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