Помощь с Codeigniter __construct () - PullRequest
       9

Помощь с Codeigniter __construct ()

2 голосов
/ 03 ноября 2010

Я проверяю, вошел ли пользователь в систему. Если это так, я хочу установить некоторые переменные, которые будут доступны всем моим функциям в этом классе. Вызов $ logged_in или $ user_name из моего представления приводит к неопределенной переменной? Пожалуйста, помогите:)

<?php
class Auth extends Controller {

function __construct()
{
parent::Controller();

$this->load->library('form_validation');
$this->load->model('Auth_model');

  if ($this->session->userdata('logged_in') == TRUE)
  {
  $this->user_name = $this->session->userdata('user_name');
  $this->logged_in = TRUE;
  }
  else
  {
  $this->logged_in = FALSE;
  }
}


function forgot()
{  
$data['title'] = "Forgot Password";
$data['main_content'] = "auth/forgot";

$this->load->view('template', $data);
}

    /* My view file */

    <?php echo $user_name; // results in undefined variables ?>

Ответы [ 2 ]

2 голосов
/ 03 ноября 2010

Это потому, что вы передали $data в представлении и $data не содержит $user_name

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

$data['user_name'] = $this->user_name;
$data['logged_in'] = $this->logged_in.
$this->load->view('template', $data);

Редактировать:

Объявите $data как глобальную переменную, т.е. непосредственно перед инициализацией конструктора, как показано ниже -

protected $data;

Затем везде используйте $data как $this->data, поэтому, если оно инициализируется с именем пользователя в одной функции, оно будет доступно и во всех функциях.

0 голосов
/ 09 ноября 2010

Еще более простой способ сделать это в вашем представлении вместо использования:

echo $ user_name;// приводит к неопределенным переменным

использование:

$ this-> session-> userdata ('user_name')?$ this-> session-> userdata ('user_name'): '';

Проще говоря, вышеприведенный оператор проверяет, установлено ли user_name в сеансе, и если это так, он отображаетимя_пользователя прямо из сеанса, иначе отображается пустым.При этом вам нужно будет убедиться, что сеанс var user_name будет уничтожен после выхода пользователя из системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...