Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何通过单击按钮实现语言切换?_Php_Codeigniter - Fatal编程技术网

Php 如何通过单击按钮实现语言切换?

Php 如何通过单击按钮实现语言切换?,php,codeigniter,Php,Codeigniter,首先加载配置文件,然后从中选择默认语言。 但我需要通过单击按钮动态更改默认语言。我该怎么做? 我的控制器里有 public function __construct() { parent::__construct(); $this->config->set_item('language', 'japanese'); $this->load->helper('language'); $this->

首先加载配置文件,然后从中选择默认语言。 但我需要通过单击按钮动态更改默认语言。我该怎么做? 我的控制器里有

public function __construct()
    {
        parent::__construct();

        $this->config->set_item('language', 'japanese');
        $this->load->helper('language');
        $this->lang->load('fileimport');
        var_dump(lang('message_missing_csvfile_import'));

    }
这将以日语显示值

config.php如下所示:

$config['language'] = 'english';
$autoload['language'] = array(
    'application'
);
<form action ='<?php echo current_url(); ?>' enctype =
 'multipart/form-data' method ='post' name="formtest" id="formtest">

             <div>
                 <select id="main_language" name ="main_language">
                     <option>English</option>
                   <option>Japanese</option>
                </select>
                <input id="main_lang_button" type="button" value="Set Main Language">
            </div></form>
autoload.php如下所示:

$config['language'] = 'english';
$autoload['language'] = array(
    'application'
);
<form action ='<?php echo current_url(); ?>' enctype =
 'multipart/form-data' method ='post' name="formtest" id="formtest">

             <div>
                 <select id="main_language" name ="main_language">
                     <option>English</option>
                   <option>Japanese</option>
                </select>
                <input id="main_lang_button" type="button" value="Set Main Language">
            </div></form>
我的看法如下:

$config['language'] = 'english';
$autoload['language'] = array(
    'application'
);
<form action ='<?php echo current_url(); ?>' enctype =
 'multipart/form-data' method ='post' name="formtest" id="formtest">

             <div>
                 <select id="main_language" name ="main_language">
                     <option>English</option>
                   <option>Japanese</option>
                </select>
                <input id="main_lang_button" type="button" value="Set Main Language">
            </div></form>

从表单中获取值时,将其放入cookie中。诸如此类:

/* form validation here */

// ...

// After you know it's a valid value:
setcookie('language', $_POST['main_language'], 0, '/');
然后在应用程序/config/config.php中使用该cookie:

注意,您还需要验证cookie。不管您设置了什么,它仍然是用户输入


当然,当您仍在处理表单时,此配置将默认为“english”。只需确保在设置cookie后执行重定向,就可以解决这个问题。

从表单中获取值时,将其放入cookie中。诸如此类:

/* form validation here */

// ...

// After you know it's a valid value:
setcookie('language', $_POST['main_language'], 0, '/');
然后在应用程序/config/config.php中使用该cookie:

注意,您还需要验证cookie。不管您设置了什么,它仍然是用户输入


当然,当您仍在处理表单时,此配置将默认为“english”。只需确保在设置cookie后执行重定向,您就可以绕过该问题。

您可以尝试此解决方案解决您的问题

请更改My_控制器以更改语言


您可以为控制器的任何语言添加set会话。 仪表板控制器


您可以将视图文件设置为


英语
日本人
添加纸条文件


基本url=“”;
$(文档).on('change','main#u language',函数(){
lang=$(“#主语言”).val();
$.ajax
({
'type':'GET',
“url”:基本url+“仪表板/更改语言/”+lang,
“成功”:函数(响应){
window.location.reload();
}
});
});

我希望这将对您有所帮助。

您可以尝试解决您的问题

请更改My_控制器以更改语言


您可以为控制器的任何语言添加set会话。 仪表板控制器


您可以将视图文件设置为


英语
日本人
添加纸条文件


基本url=“”;
$(文档).on('change','main#u language',函数(){
lang=$(“#主语言”).val();
$.ajax
({
'type':'GET',
“url”:基本url+“仪表板/更改语言/”+lang,
“成功”:函数(响应){
window.location.reload();
}
});
});

我希望这会对您有所帮助。

我如何使用会话而不是cookies?您不应该使用会话来完成此操作,而且这会更加复杂。我如何使用会话而不是cookies?您不应该使用会话来完成此操作,这会更复杂。我试过了。但它仍然显示英语而不是日语。在检查加载的语言文件之后,您可以先检查会话中的语言。echo$this->session->userdata('language'))仅显示英语,即使我从选择框中选择日语,请检查您的ajax请求以更改语言;在ajax内部,成功基于所选内容显示英语和日语。我尝试了这一点。但它仍然显示英语而不是日语。在检查加载的语言文件后,您可以首先检查会话中的语言。echo$this->session->userdata('language')仅显示英语,即使我从选择框中选择日语,请检查您的ajax请求以更改语言;ajax内部的成功在于根据选择显示英语和日语