Как изменить значение переменной внутри контроллера из файла представления (HTML)? - PullRequest
0 голосов
/ 13 мая 2010

Я следовал этому уроку: 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 Ответ

2 голосов
/ 14 мая 2010

Лучше всего сделать так, чтобы пользователь выбрал поддерживаемый язык на какой-либо странице, установил его в качестве переменной сеанса и вызывал его при необходимости загрузить язык

$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');
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...