我在CodeIgniter中有一个像这样的控制器
class C extends CI_controller {
public function A()
{
var $data;
}
public function B(){
//here i need to access the variable $data;
}
}
如何在CodeIgniter中执行此操作?我可以使用一个会话。在会话中分配该变量真的是一件好事吗?有没有更好的方式来宣布全球变量?
我这样使用但不能正常工作
class C extends CI_controller {
public $data;
public function A()
{
$this->data=1;
}
public function B(){
//here $this->data showing null value y
}
}
答案 0 :(得分:3)
全局变量仅存在于请求的生命周期中。因为对于一个请求,控制器中只执行了一个函数(或者你做错了!)全局变量不起作用。
您必须将其放入会话或数据库中。
答案 1 :(得分:2)
class C extends CI_controller {
public function A()
{
$this->load->library('session');
$data = array('data'=>$data); //set it
$this->session->set_userdata($data);
}
public function B(){
$this->load->library('session');
$this->session->userdata('data'); //access it
}
}
答案 2 :(得分:1)
您应该尝试在配置文件上设置一些变量,然后只需在控制器构造函数中包含该文件,就可以从任何所需的视图中访问这些变量... http://codeigniter.com/user_guide/libraries/config.html
答案 3 :(得分:0)
如果您有这种情况,您拥有的第二段代码将无效:输入页面C / A然后输入C / B.页面完成后,您将无法使用存储在全局变量中的值。
尝试使用会话或flashdata。 Flashdata类似于会话,但在下一次调用后它会消失。
以下是会话的CI页面和flashdata供参考:http://codeigniter.com/user_guide/libraries/sessions.html