每当我在代码点火器函数中添加$this->load->library('session');
属性时,会话将自动销毁..
请帮帮我...
控制器功能:
public function logged()
{
$this->load->library('session');
$this->load->view('includes/header');
$this->load->view('includes/nav');
$this->load->view('index');
$this->load->view('includes/footer');
}
查看页面:
<h4><?php echo $this->session->flashdata('item'); ?></h4>
错误:遇到PHP错误
严重性:注意
消息:未定义的属性:CI_Loader :: $ session
文件名:views / index.php
行号:6
回溯:
文件:C:\ xampp \ htdocs \ ravi2 \ application \ views \ index.php行:6 功能:_error_handler
文件:C:\ xampp \ htdocs \ ravi2 \ application \ controllers \ welcome.php行: 19功能:查看
文件:C:\ xampp \ htdocs \ ravi2 \ index.php行:315功能:require_once
答案 0 :(得分:1)
如果您不想在autoload.php中添加会话库,请在控制器构造函数中手动加载:
$this->load->library('session');
Most Important from the Manual:因为Loader类是由CodeIgniter的基本控制器实例化的,所以在尝试从控制器构造函数中加载库之前,请确保调用parent :: __ construct()。 < / p>
public function __construct()
{
parent::__construct();
$this->load->library('session');
}
在视图中你可以使用:
if($this->session->flashdata('item')){
// to do
}
答案 1 :(得分:0)
两个建议:
1)可能只是auto-load自动加载配置文件中的会话库。
$autoload['libraries'] = array('database', 'email', 'session');
或者,也许您是默认情况下,控制器功能中的次要负载会导致初始负载。
2)如果您无法自动加载会话库,则可以将其加载到已记录函数所在的控制器构造中。
public function __construct()
{
parent::__construct();
$this->load->library('session');
}
答案 2 :(得分:0)
您必须在查看之前设置闪存数据,即使您没有设置也要尝试回显flashdata,这是如何使用您的会话,首先使用控制器上的构造函数加载会话:
$this->load->library('session');
或在库自动加载中自动加载会话助手,然后像这样设置flash数据:
$this->session->set_flashdata("flashdataname", "data");
然后在尝试回复之前始终检查flashdata是否已设置,例如:
if (!empty($this->session->flashdata("flashdataname")))
echo ....
答案 3 :(得分:0)
在构造函数{magic method}
中加载会话库<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Controller extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->library('session');
}
public function logged() {
$this->load->view('includes/header');
$this->load->view('includes/nav');
$this->load->view('index');
$this->load->view('includes/footer');
}
}