0

我一直在使用 Jérôme Jaglale ( http://maestric.com/en/doc/php/codeigniter_i18n ) 的 CodeIgniter i18n 库,它对我的​​项目非常有用。

但由于我需要编写单独的模块,我最近添加了 CodeIgniter 模块化扩展 ( https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc ) 和导航中断。

请问我该如何解决这个问题,我很想同时使用 i18n 库和模块化扩展。

我认为我的应用程序导航无法正常工作,因为 i18n 库引入了在站点 url 中添加了一个语言段,在我的情况下,我的 url 是 localhost/index.php/en/home 并且在添加模块化扩展后,我的导航/链接停止工作。

先感谢您。

4

1 回答 1

0

最近,我尝试将 HMVC 与 i18n 一起使用,并且遇到了类似的问题。下面是我的解决方案。

1.首先你需要到这里HMVC选择“Branches”来下载HMVC扩展,不要在github上下载它可能不起作用。

2.解压缩文件夹内的HMVC扩展,将两个文件“MY_Loader.php”和“MY_Router.php”从核心文件夹复制到Codeigniter的“application/core”,然后将“MX”文件夹从“third_party”复制到Codeigniter的“application/third_party” . 至此,您的 HMVC 已安装,但它无法工作,因为 i18n 会导致问题,因此如果您运行您的网站,它可能不会显示。

3.你需要得到新版本的i18n,它同时支持HMVC和不支持HMVC,旧版本的i18n似乎不支持HMVC。到这里i18n下载它并花时间阅读 github 上的描述。

4.在此步骤之前,我建议您备份“application/core/MY_Config.php”和“application/core/MY_Lang.php”,以防出现问题,您可以恢复。解压 i18n 里面的文件夹,将 config 文件夹中的“language.php”文件复制到 Codeigniter 的“application/config”,将 core 文件夹中的“MY_Config.php”和“MY_Lang.php”两个文件复制到 Codeigniter 的“application/core”,最后复制“ MY_language_helper.php”从 helpers 文件夹到 Codeigniter 的“application/helpers”。到目前为止,您已经安装了新的 i18n,但您需要对其进行配置以使其工作,否则您可能会收到错误消息。

5.打开“application/core/MY_Config.php”并将行替换require_once APPPATH . "libraries/MX/Config.php";require_once APPPATH . "third_party/MX/Config.php";然后打开“application/core/MY_Lang.php”将行替换require APPPATH . "libraries/MX/Lang.php";require APPPATH . "third_party/MX/Lang.php";。为什么?因为它指向错误的目录,MX 文件夹位于“third_party”而不是“libraries”,以防万一您不知道,如果您不更改它,您可能会收到错误消息。

6.要添加新语言(不是创建语言文件),您需要打开“application/config/language.php”。您在顶部看到带有注释的代码块“支持的语言”已经有英语和俄语配置,您只需复制模板并更改为您想要的语言,这非常容易。请注意文件夹的名称必须与“应用程序/语言”中的文件夹完全相同。

7.根据i18n 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 的应用程序文件夹中创建一个名为“modules”的文件夹,在 modules 文件夹中,您可以开始创建模块。也就是说你想创建一个模块调用 foo,你只需要创建一个文件夹命名为“foo”,然后在 foo 文件夹中你可以创建三个文件夹控制器、模型和视图。使用下面的代码创建一个名为 foo 的 php 文件

 <?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>";
     }
 }

  

输入 url 来运行你的模块,如果你看到“class foo this is module test”那么它就可以工作了。记住模块类必须从 MX_Controller 扩展。

如果您仍然遇到任何问题,请询问。

于 2013-12-12T13:45:48.667 回答