繁体   English   中英

Codeigniter4 redirect()->to() 不工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM