2017-08-05 79 views
0

我已经发送一些$data从控制器来查看。该视图包含<form>。如何将此$data发送给控制器(控制器中的子功能)?发送后端数据(隐藏和不可编辑)到Codeigniter控制器提交表格

例:

控制器

class Register extends CI_Controller { 
    function index(){ 
    $this->load->view('login', $data['data']); 
    } 

    function get_data(){ 
    $input_value = $this->input->post('bla'); 

    /*--- here is my point of question --- 
    I wan't to call $data here and $data shuold same as $data at index() 
    */ 
    $this->model_file->insert_data_and_input_value_to_DB($data, $input_value); 
    } 

} 

查看

// $data is ready 

echo form_open('register/get_data'); 
echo '<input name='bla' />'; 
echo '<input type='submit' value='SEND input value and $data TOO'/> 
echo form_close(); 
+0

如何在索引方法中创建'$ data'数组? – Tpojka

+0

$数据来自Google Auth API客户端,由Google登录。我已经将一些google响应数据(电子邮件,Google+ ID)设置为$ data。 –

+2

您必须在数据库或文件的会话中保存这些数据。那是因为我们不是在谈论同一个请求。 – Tpojka

回答

0

你可以做到这一点在许多方面。其中之一是低于

Simply change your view like this 

    $data = array('a' => 'apple', 'b' => 'bag', 'c' => 'cat'); 
    $data = base64_encode(serialize($data)); 

    echo '<form action="register/get_data" method="post">'; 
    echo '<input type="text" name="bla" />'; 
    echo '<input type="hidden" name="data" value="'.$data.'">'; 
    echo '<input type="submit" value="SEND"/>'; 
    echo '</form>'; 

更改您控制器这样

class Register extends CI_Controller { 
     function index(){ 
      $this->load->view('login', $data['data']); 
     } 

     function get_data(){ 
       $input_value = $this->input->post('bla'); 

       if ($_POST) { 
        print_r(unserialize(base64_decode($_POST['data']))); 
       } 
       $this->model_file->insert_data_and_input_value_to_DB($data, $input_value); 
     } 

    } 

希望这会有所帮助。