我在CodeIgniter中有一个这样的控制器
class C extends CI_controller {
public function A()
{
var $data;
}
public function B(){
//here i need to access the variable $data;
}
}
如何在CodeIgniter中做到这一点?我需要一个疗程。在会话中给变量赋值真的是件好事吗?有没有更好的方式来声明全局变量?
我像这样使用,但不工作y
class C extends CI_controller {
public $data;
public function A()
{
$this->data=1;
}
public function B(){
//here $this->data showing null value y
}
}
全局变量只存在于请求的生存期内。因为对于一个请求,在控制器中只执行一个函数(或者你做错了!)全局变量将不起作用。
你必须把它放在会话或数据库
使用CI的会话帮助器:
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
}
}
你应该尝试在配置文件中设置一些变量,然后你只需将该文件包含在你的控制器构造函数中,你可以从任何视图中访问这些变量…http://codeigniter.com/user_guide/libraries/config.html
如果您有这种情况,则您拥有的第二块代码将不起作用:输入页面C/A,然后输入C/B。一旦页面完成,您将无法使用存储在全局变量中的值。
尝试使用会话或flashdata。Flashdata类似于会话,除了它在调用下一页后消失。
以下是会话和flashdata的CI页面供参考:http://codeigniter.com/user_guide/libraries/sessions.html