Codeigniter路线不起作用,可能是因为国际化?

时间:2015-03-16 12:36:22

标签: php codeigniter routes

处理codeigniter项目。 陷入困境。 我想通过 en / login 访问 en / company / login ,那么如何定义路由呢?

现在路线代码如下:

// URI like '/en/about' -> use controller 'about'
$route['^(en|lv)/(.+)$'] = "$2";

// '/en', '/lv' URIs -> use default controller
$route['^(en|lv)$'] = $route['default_controller'];

$route['company/login'] = "login";

试过:

$route['^(en|lv)/company/login'] = "login";

显然,我没有得到什么。 你能帮忙吗?

2 个答案:

答案 0 :(得分:0)

你的问题是(我有同样的),这个:

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

覆盖您的规则:

$route['^(en|lv)/company/login'] = "login";

试试这个:

$route['^(en|lv)\/(company)\/(.+)$'] = "login";

也许它可以帮助你覆盖第一个模式

如果没有,请编辑第一个模式:

$route['^(en|lv)\/(?!company).+$'] = "$2";

答案 1 :(得分:0)

 $route["(en|fr|gr)/(:any)/login"] = "login/index/$1";

-

 public function index($company)
 {
       $language = strtolower($this->uri->rsegments[3]);

        if(!in_array($language, ['en', 'fr'])){
            // set a default language
            // if the route does not provide a valid one
            $language = 'en';
        }

        // Load the language file for the selected language
        // for example english, language/en/en_lang.php
        $this->lang->load($language, $language);

}
  

感谢您的回答,但似乎我没有解释   / company /是控制器和/ login /是"公司"功能。您的   解决方案不适合我。 :/

// The $route should contain the uri,
// you seem to have them mixed up.  
// $route['uri'] = "controller/method"
$route['(en|lv)/login'] = 'company/login';