【问题标题】:CodeIgniter i18n Routing ErrorCodeIgniter i18n 路由错误
【发布时间】:2015-10-11 18:01:51
【问题描述】:

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

首先,我在 i18n 中使用 this 库。当然,我对 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';

但我知道这不是真正的方法。如果你也对这个有任何报价,你让我很高兴。

提前致谢!

【问题讨论】:

    标签: php codeigniter routing internationalization


    【解决方案1】:

    我解决了!

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

    【讨论】:

    • 你不需要删除它。换个地方就行了。 IE。第一个 $route['tr/admin/main/(:num)'] = 'back/home/$1';$route['^(tr|en)/(.+)$'] = '$2';。注意文档中路线的顺序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2015-06-01
    • 1970-01-01
    相关资源
    最近更新 更多