2015-10-11 3 views
1

Я создаю многоязычный веб-сайт с версией CodeIgniter 3.0 и имею некоторые ошибки на стороне маршрутизации.CodeIgniter i18n Ошибка маршрутизации

Прежде всего, я пользуюсь библиотекой this для i18n. Разумеется, я сделал небольшие изменения для версии 3.0, потому что эта библиотека для версии 2.0. Я только что сделал это изменение на файле MY_Config.php.

Оригинал MY_Config.php файл:

class MY_Config extends CI_Config { 

    function site_url($uri = '') 
    { 
     if (is_array($uri)) 
     { 
      $uri = implode('/', $uri); 
     } 

     if (class_exists('CI_Controller')) 
     { 
      $CI =& get_instance(); 
      $uri = $CI->lang->localized($uri);   
     } 

     return parent::site_url($uri); 
    } 

} 

Мой MY_Config.php файл:

class MY_Config extends CI_Config 
{ 
    public function site_url($uri = '', $protocol = NULL) 
    {  
     if (is_array($uri)) 
     { 
      $uri = implode('/', $uri); 
     } 

     if (function_exists('get_instance')) 
     { 
      $uri = get_instance()->lang->localized($uri);    
     } 

     return parent::site_url($uri, $protocol); 
    } 
} 

Моя проблема о (:num) вещь. Все страницы маршрутизируются нормально, кроме (:num). Например, это работает отлично;

$route['^(tr|en)/(.+)$'] = '$2'; 

$route['tr/admin/main'] = 'back/home'; 

Но этот не работает. Он дает 404 error.

$route['^(tr|en)/(.+)$'] = '$2'; 

$route['tr/admin/main/(:num)'] = 'back/home/$1'; 

Я попытался изменить back/home/$1 к back/home/$3, но ничего не изменилось.

У меня также есть еще одна проблема, которую я не мог решить. Если я хочу использовать больше языков, я должен добавить в эту структуру разные переменные файла маршрутизации. Например; если я хочу использовать французский язык, мне нужно добавить эту строку на application/config/routes.php:

$route['fr/admin/main/(:num)'] = 'back/home/$1';

Но я знаю, что это не истинный метод. Если у вас есть предложение для этого, вы делаете меня счастливым.

Заранее благодарен!

ответ

1

Я решил это!

Просто удалите $route['^(tr|en)/(.+)$'] = "$2"; строку на application/config/routes.php. Это все.

+0

Вам не нужно его удалять. Просто переключите их. И.Е. сначала '$ route ['tr/admin/main/(: num)'] = 'back/home/$ 1';' than '$ route ['^ (tr | en)/(. +) $'] = ' $ 2' ; '. Обратите внимание на использование маршрутов в документации. – Tpojka

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