【问题标题】:Codeigniter - using session data in viewCodeigniter - 在视图中使用会话数据
【发布时间】:2012-11-15 16:31:20
【问题描述】:

我有一个用户的名字和姓氏存储在会话数据中,我想在视图中回显它,这样他们就可以看到他们登录的身份。我似乎无法让数据通过。我敢肯定这很容易,但我对 CI 和整个 MVC 还很陌生。

控制器代码:

public function index() {
    if($this->session->userdata('admin_signed_in')){
    $this->load->model('dashboard_model');
    $data['userdata'] = $this->session->userdata;
    $data['main_content'] = 'dashboard/dashboard';  
    $this->load->view('common/template', $data);
    } else {
    redirect('signin');
    }

}

查看代码:

<?php echo $userdata('first_name') ?>  <?php echo $userdata('last_name') ?>

打印 R 结果:

Array ( [session_id] => 69db0f9ccbfde96d92cc09837067438c [ip_address] => ::1 [user_agent] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0 [last_activity] => 1352998508 [user_data] => [0] => Array ( [admin_id] => 10 [first_name] => Richard [last_name] => Coy [admin_role] => 1 ) [admin_signed_in] => 1 ) 

【问题讨论】:

  • 您正在以函数格式(使用括号)使用$userdata 变量,而这是一个变量,在您的情况下是一个数组!尝试改用$userdata['firstname']
  • echo $this-&gt;session-&gt;userdata('your_session_name');

标签: codeigniter session variables


【解决方案1】:

控制器代码:

public function index() {

    ...
    $data['first_name'] = $this->session->userdata('first_name');
    ...
}

查看代码:

<?= $first_name; ?>

或者,如果您想像现在一样传递数据,您可以将视图数据 userdata 作为数组而不是函数访问,即:

<?= $userdata['first_name'];?>

【讨论】:

  • 使用您提供的代码不会将任何内容传递给视图。我添加了 print_r 结果以显示数据存在。
  • 将用户数据分配给$data['first_name'] 后,它包含什么?
  • 我不知道如何检查。
  • 我可以硬编码一个值,它会被传递并显示在视图中。会话一定有问题。
  • 我的会话代码还有其他几个问题。在我得到这些修复后,你的代码就可以工作了。谢谢。这个 CI 东西很酷,但一开始也很难掌握。
【解决方案2】:

正如我在 cmets 中提到的,当您将值分配给数组 $data 并将其传递给 Codeigniter 视图加载器时,数据将在视图部分中可用,其变量名称与数组索引相同。
例如当你这样做时:

$data['name'] = "bla bla";
$this->load->view('some_view', $data);  

然后视图中的$name 变量将包含您传递的值。在您的情况下,您将一个数组分配给$data['userdata']。所以视图中的$userdata 也将是一个数组。

所以这样做:

echo $userdata['firstname'];
echo $userdata['lastname'];  

在视图部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    相关资源
    最近更新 更多