0

Я использую библиотеку CodeIgniter i18n от 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, и после добавления модульных расширений моя навигация/ссылки прекрати работать.

Заранее спасибо.

ответ

0

В последнее время я пытаюсь использовать HMVC с i18n и имею схожую проблему. Ниже мое решение.

1. Прежде всего вам нужно зайти сюда HMVC выберите «Ветки», чтобы загрузить расширение HMVC, не загружайте его в github, возможно, он не работает.

2.Unzip Расширение HMVC внутри папки копирует два файла «MY_Loader.php» и «MY_Router.php» из основной папки в «приложение/ядро» Codeigniter после этой копии папки «MX» от «third_party» до «Codeigniter», Приложение/THIRD_PARTY». К этому моменту ваш HMVC установлен, однако он не будет работать, потому что i18n вызывает проблему, поэтому, если вы запустите свой сайт, он может не отображаться.

3. Вам нужно получить новую версию i18n, которая поддерживает как HMVC, так и ни один HMVC, старая версия i18n, похоже, не поддерживает HMVC. Перейдите на страницу i18n. Скачайте ее и найдите время, чтобы прочитать описание на github.

4. Перед этим шагом я предлагаю вам создать резервную копию «application/core/MY_Config.php» и «application/core/MY_Lang.php», если что-то пойдет не так, вы можете вернуться назад. Unzip i18n внутри папки скопируйте файл «language.php» из папки конфигурации в «приложение/конфиг» Codeigniter, скопируйте два файла «MY_Config.php» и «MY_Lang.php» из основной папки в «приложение/ядро» Codeigniter, 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». Вы видите сверху блок кода с комментарием, который говорит «Поддерживаемые языки», у вас уже есть английский и русский язык, и вам просто нужно скопировать шаблон и перейти на нужный язык, это очень просто. Знать имя папки должно быть точно так же, как папка в «application/language».

7.Согласно i18n описанию GitHub вам нужно добавить эти строки

$route['^(en|de|fr|nl)/(.+)$'] = "$2";

$route['^(en|de|fr|nl)$'] = $route['default_controller'];

в "приложение/Config/routes.php". Помните, что эта строка $route['^(en|de|fr|nl)/(.+)$'] = "$2"; в старом i18n, вероятно, равна $route['^(en|de|fr|nl)/(.+)$'] = "$1";, разница в «1 доллар» должна измениться на «$ 2», иначе у вас возникнет проблема.

8.Для создания языкового файла такой же, как метод, выполненный в старом i18n. Теперь проверьте свой веб-сайт на нескольких языках, чтобы убедиться, что все работает нормально.

9.Создание модуля. Как? Создайте имя папки «modules» внутри папки приложения Codeigniter, внутри папки модулей вы можете начать создавать свой модуль. Например, вы хотите создать вызов модуля foo, вам просто нужно создать имя папки «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>"; 
    } 
} 

Введите URL для запуска модуля, если вы видите «класса Foo это тестовый модуль», то он работает. Помните, что класс модуля должен распространяться от MX_Controller.

Если вы все еще сталкиваетесь с какой-либо проблемой, просто спросите.

Смежные вопросы