我有一个 Controller ,在构造函数中,我想检查用户是否登录。如果没有,我希望显示一条错误消息,并让脚本退出而不在 Controller 中运行任何其他功能。此 Controller 将仅由 ajax 调用,因此错误将通过 JSON 显示,然后客户端上的 javascript 将其显示给用户。
我该怎么做?如果我这样做:
function __construct()
{
if (! $this->loggedIn() )
{
echo json_encode( array('error'=> true) );
die;
}
}
我认为不会显示该消息,因为 codeigniter 使用输出缓冲。有什么想法吗?
最佳答案
我了解到您的问题是客户希望得到 json 类型的响应,因此可以使用两个选项:
public function __construct(){
$_bad_login_msg = 'please try again' ;
parent::__construct();
if(!userLoggedIn()){
$this->output
->set_content_type('application/json')
->set_output(json_encode($_bad_login_msg));
//or just use
// echo json_encode($_bad_login_msg);
die;
}
}
http://codeigniter.com/user_guide/libraries/output.html
你不会有任何缓冲问题,缓冲区内容将被发送到客户端之后死...
关于php - 如何在 Controller 的 __construct() 函数中没有 die() 的情况下退出 codeigniter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11176880/