用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2327|回复: 2
收起左侧

[版本 4.x] 关于ci4 redirect的问题

[复制链接]
发表于 2020-7-13 16:54:14 | 显示全部楼层 |阅读模式
我知道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');                  
        }
    }

}


发表于 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

本版积分规则