最近,我嘗試使用HMVC與i18n並有類似的問題。以下是我的解決方案。
1.首先你需要去這裏HMVC選擇「分支」下載HMVC擴展名,不要下載github上的那個,它可能無法工作。
2.將「MX」文件夾從「third_party」複製到Codeigniter的「文件夾」後,解壓縮文件夾中的HMVC擴展名將兩個文件「MY_Loader.php」和「MY_Router.php」從核心文件夾複製到Codeigniter的「應用程序/核心」應用程序/ THIRD_PARTY」。通過這一點你的HMVC被安裝,但它不會工作,因爲i18n導致的問題,所以如果你運行你的網站它可能不會顯示。
3.您需要獲得支持HMVC和無HMVC的i18n新版本,舊版本的i18n似乎不支持HMVC。去這裏i18n下載它,並花時間閱讀github上的描述。
4.在這一步之前,我建議你備份「application/core/MY_Config.php」和「application/core/MY_Lang.php」,以防萬一出現問題,你可以倒退。將i18n文件夾內的文件複製文件「language.php」從config文件夾中解壓到Codeigniter的「application/config」,將兩個文件「MY_Config.php」和「MY_Lang.php」從核心文件夾複製到Codeigniter的「application/core」 MY_language_helper.php「從助手文件夾到Codeigniter的」應用程序/助手「。到目前爲止,您已經安裝了新的i18n,但您需要對其進行配置才能使其工作,否則您可能會收到錯誤消息。
5.Open 「應用程序/核心/ MY_Config.php」 和替換行require_once APPPATH . "libraries/MX/Config.php";
到require_once APPPATH . "third_party/MX/Config.php";
然後打開 「應用程序/核心/ MY_Lang.php」 替換行require APPPATH . "libraries/MX/Lang.php";
到require APPPATH . "third_party/MX/Lang.php";
。爲什麼?因爲它指向錯誤的目錄,如果您不知道MX文件夾位於「third_party」而不是「庫」中,如果您不更改它,則可能會收到錯誤消息。
6.要添加新的語言(不創建語言文件),你需要打開「application/config/language.php」。您可以在代碼塊的頂部看到帶有註釋的代碼塊,其中說明「支持的語言」已經爲您配置了英語和俄語語言,只需將該模板複製並更改爲所需的語言即可,非常簡單。請注意文件夾的名稱必須與「應用程序/語言」中的文件夾完全相同。
7。根據國際化的github說明你需要
$route['^(en|de|fr|nl)/(.+)$'] = "$2";
$route['^(en|de|fr|nl)$'] = $route['default_controller'];
添加這些行到 「的application/config/routes.php文件」。請注意這條線$route['^(en|de|fr|nl)/(.+)$'] = "$2";
在舊i18n大概是$route['^(en|de|fr|nl)/(.+)$'] = "$1";
區別是「$ 1」必須更改爲「$ 2」,否則您將遇到問題。
8.創建語言文件與您在舊i18n中使用的方法相同。現在用多種語言測試你的網站,以確保一切正常。
9.創建你的模塊。怎麼樣?在Codeigniter的應用程序文件夾內創建一個文件夾名稱「模塊」,在模塊文件夾內,您可以開始創建您的模塊。也就是說,你想創建一個模塊調用foo,你只需要創建一個名爲「foo」的文件夾,然後在foo文件夾中就可以創建三個文件夾控制器,模型和視圖。下面創建
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
class Foo extends MX_Controller
{
public function index()
{
echo "<h1>class foo this is module test</h1>";
}
}
php文件一個名爲foo的代碼輸入網址來運行你的模塊,如果你看到「類Foo這是模塊測試」,那麼它的工作。 記住模塊類必須從MX_Controller擴展。
如果您仍然遇到任何問題,請詢問。