如何在控制器中获取此功能以在视图中加载

时间:2012-03-11 02:19:05

标签: php codeigniter

这是在控制器中

class LandingPage extends CI_Controller {
    public function startEncryptedSession(){
    $this->load->library('session'); 
    $this->load->library('encrypt');    

    $this->load->view('index', array('session', $this->session));
}


}

如何在视图index

中加载此内容

view代码

<?php echo $head; ?>

<body>
    <?php echo $guts; ?>
</body>

<?php echo $foot; ?>
<?php echo $session->userdata('session_key'); ?> 

我正在使用代码点火器MVC

当我加载视图时,它会给我:

<h4>A PHP Error was encountered</h4>

<p>Severity: Notice</p>
<p>Message:  Undefined variable: session</p>
<p>Filename: views/index.php</p>
<p>Line Number: 8</p>

</div><br />
<b>Fatal error</b>:  Call to a member function userdata() on a non-object 

1 个答案:

答案 0 :(得分:0)

您需要将要使用的变量传递给视图。 像这样:

单向:

在您的控制器中:

public function startEncryptedSession(){
    $this->load->library('session'); 
    $this->load->library('encrypt');
    $data = array('session_key' => $this->session->userdata('session_key'));
    $this->load->view('index', $data);
}

在您看来:

<?php echo $session_key; ?> 

另一种方式:

在您的控制器中:

public function startEncryptedSession(){
    $this->load->library('session'); 
    $this->load->library('encrypt');    
    $data = array('session' => $this->session->all_userdata());
    $this->load->view('index', $data);
}

在您看来:

<?php echo $session['session_key']; ?> 

建议:CodeIgniter的会话类有点糟糕,因为它将数据存储在cookie上并且数据大小限制非常低(或者至少是我上次检查它的工作方式)...所以你可能会这么做想要使用PHP的默认会话函数或创建自己的类来处理它。但是我会留给你检查,因为它不是你要问的。