Php codeigniter重定向到位置为默认链接的语言
目前正在codeigniter多语言网站上工作。我的网站名是www.abcd.com,正在调用默认控制器。需要将www.abcd.com/en/location重定向为默认链接,当用户更改其将重定向的语言时,如www.abcd.com/fr/location。做这件事的最佳方法是什么,任何帮助都将受到高度赞赏我使用这样的会话 application/config/routes.phpPhp codeigniter重定向到位置为默认链接的语言,php,html,codeigniter,multilingual,Php,Html,Codeigniter,Multilingual,目前正在codeigniter多语言网站上工作。我的网站名是www.abcd.com,正在调用默认控制器。需要将www.abcd.com/en/location重定向为默认链接,当用户更改其将重定向的语言时,如www.abcd.com/fr/location。做这件事的最佳方法是什么,任何帮助都将受到高度赞赏我使用这样的会话 application/config/routes.php $route['default_controller'] = "default_controller/se
$route['default_controller'] = "default_controller/select_home";
//if make a generic page public example
$route['public/(:any)'] = 'public/public/page_render/$1';
default_controller.php
function __construct(){
parent::__construct();
$this->router =& load_class('Router', 'core');
$this->_set_lang_language($this->get_language());
}
public function select_home( $page = 'index' ){
redirect(base_url($page), 'refresh');
}
public function get_language(){
if( is_null($this->session->userdata('language')) || ! $this->session->userdata('language')){
$_language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
}
else{
$_language = $this->session->userdata('language');
}
return $_language;
}
private function _set_lang_language( $language = '' ){
switch($language){
case 'en':
$new = 'english';
break;
case 'es':
default:
$new = 'spanish';
break;
}
$this->lang->load('calendar', $new);
$this->lang->load('date', $new);
$this->lang->load('db', $new);
$this->lang->load('email', $new);
$this->lang->load('form_validation', $new);
$this->lang->load('ftp', $new);
$this->lang->load('imglib', $new);
$this->lang->load('number', $new);
$this->lang->load('profiler', $new);
$this->lang->load('unit_test', $new);
$this->lang->load('upload', $new);
}
public function set_language( $language ){
$this->session->set_userdata('language', $language);
$this->_set_lang_language();
}
application/public/public.php
function __construct(){
parent::__construct();
}
public function page_render( $page ){
//you can change your lang with parser or with deferents views as you want
$data = array(...);
$this->load->view('header', $data);
$this->load->view($page, $data);
$this->load->view('footer', $data);
}
尽管您可以使用routes执行此操作,但我始终建议在应用程序/core内部使用名为MY_controller的单独控制器类,扩展默认的CI_控制器
class MY_Controller extends CI_Controller {
function __construct() {
}
}
然后在控制器中(比如说示例控制器),您必须扩展MY\u控制器,并在构造函数中添加所需的功能
class Example_controller extends MY_Controller {
public function __construct() {
parent::__construct();
}
}
您可以在MY_控制器内根据需要执行哪些操作?好吧,你可以查一下
$language=$this->uri->segment(2)//小心,数字取决于你的项目
并在$language的if语句中应用您的功能
class MY_Controller extends CI_Controller {
function __construct() {
}
}
为了检查用户是否已经选择了他的语言,您必须与会话相结合。最好的方法是在routes.php中定义url