如何从视图文件(html)更改控制器内变量的值?

时间:2010-05-13 19:23:21

标签: codeigniter internationalization

我遵循了本教程:http://codeigniter.com/wiki/Internationalization_and_the_Template_Parser_Class/

加载语言的控制器就是这个:

<?php

class Example extends Controller {

    function Example() {
        parent::Controller();

        # Load libraries
        $this->load->library('parser');

        # Load language
        $this->lang->load('example', 'english');
    }

    function index() {
        # Load variables into the template parser
        $data = $this->lang->language;

        # Display view
        $this->parser->parse('example', $data);
    }

}

?>

要更改语言,我必须手动将english更改为控制器中的spanish

用户可以通过 index.php 文件(视图)执行此操作的最佳方式是什么?

1 个答案:

答案 0 :(得分:2)

最好的办法是让用户在某个页面上选择支持的语言,将其设置为会话变量,并在需要加载语言时调用它

$language = $this->session->userdata("language");

$this->lang->load("example", $language);

$data = $this->lang->language;

$this->parser->parse("example", $data);

以下编辑

如果你正在使用CodeIgniter并且你是新手,我不会建议搞乱index.php文件。

您希望在控制器中执行此操作,方法是加载一个可以选择语言并将其存储在会话中的表单。我还建议自动加载会话库。

控制器:

<?php

class Home extends Controller {

    function Home()
    {
        parent::Controller();

        $this->load->library("session");
    }

    function index()
    {
        $language = $this->session->userdata("language");

        $this->lang->load("example", $language);

        $data = $this->lang->language;

        $this->parser->parse("example", $data);
    }

    function set_lang()
    {
        if( ! $this->form_validation->run())
        {
            $this->load->view("select_language_form");
        }
        else
        {
            $language = $this->input->post('language', TRUE);

            $this->session->set_userdata('language', $language);

            redirect('home' 'location');
        }
    }
}