CodeIgniter i18n路由错误

时间:2015-10-11 18:01:52

标签: php codeigniter routing internationalization

我正在构建一个版本为CodeIgniter 3.0的多语言网站,并且在路由方面存在一些错误。

首先,我使用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 个答案:

答案 0 :(得分:1)

我解决了!

只需删除$route['^(tr|en)/(.+)$'] = "$2";上的application/config/routes.php行即可。这就是全部。