从控制器功能设置全局变量



我正在从事 CI 项目,我被困在某个地方。我尝试从函数设置一个全局变量值,并从其他函数访问此值。这是我的代码。

class Example extends CI_Controller {
public $gData = "";
public function userinfo() {
//Here i fetch user infomration from database table 
$userName = "userName";
$this->gData = $userName;
}
public function getuserinfo() {
echo $this->gData;
}
}

userinfo是我的实际页面,它在浏览器中打开,并从用户表中获取用户数据。在我看来,我有按钮单击按钮,我正在调用 ajax,它调用控制器的getuserinfo方法,它应该返回我在该方法中设置的用户名userinfounfortunetly它不起作用。任何意志plz引导我犯错的地方。(我不允许使用会话(

试试这个: 您必须首先在全局变量中设置用户名:

class Example extends CI_Controller {
public $gData = "";
public function userinfo() {
//Here i fetch user infomration from database table 
$userName = "userName";
$this->gData = $userName;
}
public function getuserinfo() {
$this->userinfo();
echo $this->gData;
}
}

或者您可以使用构造函数:我不熟悉 CI

class Example extends CI_Controller {
public $gData = "";
Public function __construct() { 
parent::__construct(); 
$this->userinfo();
} 
public function userinfo() {
//Here i fetch user infomration from database table 
$userName = "userName";
$this->gData = $userName;
}
public function getuserinfo() {
echo $this->gData;
}
}

编辑答案:根据评论,如果您不想使用会话,解决方案可以像这样:

1.使用用户信息的查询创建视图。

2.使用该视图创建一个模型并编写逻辑。 我认为这可能会对您有所帮助.它不会减慢您的结果。

您可以按照 Amitesh 所述在构造函数中定义变量,也可以将userinfo()方法更改为仅返回数据,以便getuserinfo()方法可以使用它。例如:

class Example extends CI_Controller {
public function userinfo() {
//Here i fetch user infomration from database table 
$userName = "userName";
return $userName;
}
public function getuserinfo() {
// get the data
$username = $this->userinfo();
echo $username;
}
}

通过调用$this->userinfo()您将运行该方法,并且返回值将可用于进行调用的任何函数(在同一控制器内(

最新更新