2010-05-13 53 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

相關問題