Я создаю многоязычный веб-сайт с версией 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';
Но я знаю, что это не истинный метод. Если у вас есть предложение для этого, вы делаете меня счастливым.
Заранее благодарен!
Вам не нужно его удалять. Просто переключите их. И.Е. сначала '$ route ['tr/admin/main/(: num)'] = 'back/home/$ 1';' than '$ route ['^ (tr | en)/(. +) $'] = ' $ 2' ; '. Обратите внимание на использование маршрутов в документации. – Tpojka