CodeIgniter模块化扩展&;i18n库


CodeIgniter Modular Extensions & the i18n library

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

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

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

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

提前谢谢。

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

1.首先你需要转到这里HMVC选择";分支;要下载HMVC扩展,不要在github上下载它可能不起作用。

2.解压缩文件夹内的HMVC扩展复制两个文件";MY_ Loader.php";以及";MY_Router.php";从核心文件夹到Codeigniter的";应用程序/核心";在该副本之后";MX";文件夹来自";第三方";到Codeigniter的";应用程序/第三方";。到目前为止,您的HMVC已经安装,但它不会工作,因为i18n会导致问题,因此如果您运行网站,它可能不会显示。

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

4.在此步骤之前,我建议您备份";application/core/MY_Config.php";以及";application/core/MY_Lang.php";万一出了问题,你可以回头看看。解压缩i18n内部文件夹复制文件";language.php";从配置文件夹到Codeigniter的";application/config";,复制两个文件";配置php";以及";"MY_Lang.php";从核心文件夹到Codeigniter的";"应用程序/核心";,最后复制";语言帮助程序php";从helpers文件夹到Codeigniter的"文件夹;应用程序/助手";。到目前为止,您已经安装了新的i18n,但需要对其进行配置以使其正常工作,否则可能会收到错误消息。

5.打开";application/core/MY_Config.php";并且将线路CCD_ 1替换为CCD_;application/core/MY_Lang.php";将线路CCD_ 3替换为CCD_。为什么?因为它指向错误的目录;第三方";而不是";图书馆";如果您不知道,若不更改它,您可能会收到错误消息。

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";。请注意,旧i18n中的这条线CCD_ 7可能是CCD_$1〃;必须更改为"$2〃;,否则你会有问题的。

8.创建语言文件的方法与您在旧i18n中所做的方法相同。现在用多种语言测试你的网站,确保一切正常。

9.创建您的模块。怎样创建文件夹名称";模块";在Codeigniter的应用程序文件夹中,在模块文件夹中,您可以开始创建模块。也就是说,你想创建一个名为foo的模块,你只需要创建一个文件夹名称it"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来运行你的模块,如果你看到"类foo这是模块测试";然后它就工作了。请记住,模块类必须从MX_Controller扩展。

如果你仍然遇到任何问题,就去问吧。