icen21 发表于 2020-7-13 16:54:14

关于ci4 redirect的问题

我知道4.0的文档有说明,return redirect()->to($url);这样使用的。但为什么一定要在控制器里面的方法调用才行呢?每个方法都必须重复调用才行?

例如:

<?php
namespace App\Controllers\Test;

use App\Controllers\BaseController;

class Test extends BaseController {


    public function initController(\CodeIgniter\HTTP\RequestInterface $request, \
      CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
    {                  

      parent::initController($request, $response, $logger);

      //这里使用redirect无效
      if(!$this->session->get('user_id')){            
            return redirect()->to('login/index');                  
      }

    }
    public function t1(){
      //必须在这里调用
      if(!$this->session->get('user_id')){            
            return redirect()->to('login/index');                  
      }
    }

    public function t2(){
      //必须在这里调用
      if(!$this->session->get('user_id')){            
            return redirect()->to('login/index');                  
      }
    }

}


blackice 发表于 2020-8-2 21:11:32

把initController中的跳转改成

redirect()->to('login/index')->send();
exit(EXIT_SUCCESS);

连普科技 发表于 2020-8-2 21:33:39

如果只是判定是否登录,可用新建一个 登录后才能的用的基类;
比如 默认的是 BaseController, 那我可以再创建一个 UserCtro 继承 BaseController,在UserCtro 里的初始方法里判断是否登录
这样 ,需要登录才能操作的控制就 再继承 UserCtro, 其它的控制器可以 继续 继承BaseController
页: [1]
查看完整版本: 关于ci4 redirect的问题