[英]Codeigniter4 redirect()->to() is not working
在 CI4 上,当管理员未登录时,我试图将用户重定向到admin/login
。
$this->session->isAdminLoggedIn
正在正常工作。 但是当我转到admin/index
时,用户没有被重定向并且语句echo __METHOD__;
正在执行。 我究竟做错了什么?
<?php
namespace App\Controllers\Admin;
use CodeIgniter\Controller;
use App\Controllers\BaseController;
use Config\Services;
class Admin extends BaseController{
protected $session;
public function __construct(){
$this->session = Services::session();
}
private function admin_login_check(){
if ( !$this->session->isAdminLoggedIn ){
$R2 = urlencode( current_url() );
return redirect()->to('admin/login?r2='.$R2);
}
}
public function index(){
$this->admin_login_check();
echo __METHOD__;
}
}
正如@ViLar 开始指出的那样,这就是您返回(或不返回)响应 object 的方式。
redirect()->to()
在调用时不会立即执行重定向。 它返回一个 object 最后,必须由 Controller 本身返回才能工作。
您将 object 从admin_login_check()
返回到index()
但随后在index()
中完全忽略它; 因此 Controller 从未真正接收或返回由调用redirect()
创建的 object 。
如果您要从嵌套的 function 调用中返回重定向,则需要确保 Response object 一直返回该堆栈,以便最初调用的 Controller 方法实际上返回它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.