2014-12-20 1 views
1

Я пытаюсь присвоить значение свойства одной функции и получить доступ к ней в другой функции. Я думал, что это должно быть так просто. К сожалению, я не могу справиться с этой простой задачей.PHP Codeigniter, присваивая значение свойства и присоединяя его

Вот мой контроллер:

<?php 
class Form_Controller extends CI_Controller { 

    public $current_user; 
    public $pi = 3.14; 

    function index() { 
     $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email'); 

     $this->form_validation->set_rules('username', 'Username'); 
     $this->form_validation->set_rules('password', 'Password'); 

     if ($this->form_validation->run() == FALSE) { 
      $this->load->view('login_form'); 
     } else { 
      $this->load->model('Admin_Users_Model'); 
      $is_logged_in = $this->Admin_Users_Model->login(); 

      if ($is_logged_in) { 
       $this->load->view('admin_panel/panel'); 
       $this->load->view('admin_panel/account_verification_status_form'); 
      } else { 
       $this->load->view('login_form'); 
      } 
     } 
    } 

    function account_verification() { 

     $this->load->model('User_Id_Model'); 
     $data['user_data'] = $this->User_Id_Model->get_user_credentials(); 

     $this->current_user = $data['user_data']; 

     foreach ($this->current_user as $value) { 
      echo $value; 
     } 

     $this->load->view('admin_panel/panel'); 
     $this->load->view('admin_panel/account_verification_status_form'); 
     $this->load->view('admin_panel/account_verification_name_form', $data); 
     $this->load->view('admin_panel/account_verification_status', $data); 
    } 

    function name_verification() { 

     $selected_value = $this->input->post('verify-name'); 

     echo count($this->current_user) . '<br />'; 

     echo $this->current_user; 
     echo $this->pi; 
     $this->account_verification(); 
    } 

    private function _write_to_database($user_data) { 
     $this->load->model('User_Id_Model'); 
     $this->User_Id_Model->write_to_database($user_data); 
    } 

} 
?> 

Когда я звоню account_verification(), $current_user присваивается значение, и я могу напечатать. После этого я звоню name_verification(), но $current_user не имеет значения. Если вы знаете, что здесь происходит, объясните, пожалуйста.

ответ

1

первую очередь после того, как смотреть на код

1), если вы звоните name_varification из URL, чем вы не назначая какое-либо значение для глобальной varibale т.е.

$this->current_user. 

2), если вы звоните account_varification из URL, чем у вас есть assigne данные Golbal переменной

$this->current_user 

и вы не вызывая name_varification изнутри account_varification это снова я t означает, что вы вызываете его из URL-адреса, поэтому он потеряет свою ценность, поэтому правильный код либо вызывает имя name_varificaton, либо присваивает ему следующие данные.

$this->load->model('User_Id_Model'); 
    $data['user_data'] = $this->User_Id_Model->get_user_credentials(); 
    $this->current_user = $data['user_data']; 

после этого вызова $ this-> account_verification как только вы вызываете, чем обе функции будут иметь значения

я надеюсь, вы понимаете. С уважением Imran Qasim

+0

Я не знаю, что вы имеете в виду. Пожалуйста, дополните. Чтобы уточнить - у меня есть вид с формой. Форма вызывает account_verification() account_verification() добавляет еще одно представление, которое загружает другую форму. Когда вторая форма отправлена, она вызывает имя_версия(). В account_verification() Я получаю некоторые учетные данные пользователя: $ data ['user_data'] = $ this-> User_Id_Model-> get_user_credentials(); То, что я пытаюсь сделать, это передать эти учетные данные второму методу, поэтому я могу обновить этого пользователя в БД со значениями, полученными из второй формы. – newuser123

+0

Если есть две формы, это означает, что вы вызываете обе функции через url, поэтому, когда вы вызываете функцию name_varification, чем глобальная переменная current_user не сохраняет свое значение. это то, что я имею в виду, если вы хотите сохранить это значение, чем нужно использовать сессию для повторного использования значения после отправки первой формы и получить это значение из сеанса, когда вы вызываете второй метод name_varification, это решит вашу проблему. –

+0

Вы на самом деле правы. Добавление его в сеанс позволяет передать его следующей функции ... Все, что осталось для меня, это выяснить, что делать дальше: X – newuser123

Смежные вопросы