Codeigniter的帮助__construct()

时间:2010-11-03 04:24:06

标签: php codeigniter constructor

我正在检查用户是否已登录。如果他们是,我想设置一些可用于该类中所有函数的变量,这是迄今为止的代码。从我的视图中调用$ 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 个答案:

答案 0 :(得分:2)

这是因为您在视图中已通过$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,如果在一个函数中使用username初始化,那么它也将在所有函数中可用。

答案 1 :(得分:0)

在您的视图中更简单的方法,而不是使用:

  

echo $ user_name; //导致未定义的变量

使用:

  

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

简单来说,上面的语句检查会话中是否设置了user_name,如果是,则直接从会话中显示user_name,否则显示为空白。有了这个,您需要确保在用户注销后销毁会话var user_name。