2010-05-13 37 views
0

我跟着这个教程:http://codeigniter.com/wiki/Internationalization_and_the_Template_Parser_Class/如何从视图文件(html)更改控制器内的变量的值?

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

<?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文件(视图)执行此操作的最佳方式是什么?

回答

2

做的最好的事情是让用户选择一些网页上所支持的语言,将其设置为一个会话变量,并调用它时,你永远需要加载语言

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

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

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

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

低于EDITED

如果你使用的是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'); 
     } 
    } 
} 
+0

对不起,我是初学者。你能给我一个index.php文件代码的例子吗? (用户点击链接更改语言)。 – alexchenco 2010-05-13 20:10:54

相关问题