我正在使用 CodeIgniter 开展项目。我使用自定义MY_Controller扩展了CI的基本Controller类。 MY_Controller具有身份验证标志变量$auth = FALSE
。在需要身份验证的页面上,我调用auth_model->runAuth()
函数来运行检查,如果所有检查都通过,则此标志应更新为TRUE
。出于某种原因,我无法直接从带有$auth
的auth_model更新MY_Controller中的$this->auth = TRUE
变量,但我必须先将检查结果传递回页面控制器,然后更新{{1} MY_Controller中的变量。任何想法如何直接从模型更新MY_Controller中的$auth
标志而不通过控制器?非常感谢你提前!
答案 0 :(得分:1)
您最好的选择是通过方法调用直接分配标志,如
$this->auth = $this->auth_model->runAuth();
在MY_Controller类中!方法runAuth()
不需要进行大的改动:
而不是调用$auth = TRUE
或FALSE
,只需返回true或false,如下所示:
public function runAuth()
{
// do stuff
return true; // or false depending on success.
}
希望有所帮助。否则你需要以某种方式引用MY_Controller对象。例如:
$this->auth_model->runAuth($this);
现在在您的方法中:
public function runAuth(MY_Controller $myctrl)
{
// do stuff
$myctrl->auth = true; // or false
}
另一种选择是使用静态字段:
class MY_Controller extends Controller
{
public static $auth = false;
// the other stuff
}
现在你可以在没有对象引用的情况下更新它:
public function runAuth()
{
// do stuff
MY_Controller::$auth = true;
}
在您的模型中,您可以像这样访问它:
if (static::$auth) echo "Boo Yeah!";