加载视图的更好方法Codeigniter3

时间:2017-02-01 01:43:26

标签: performance codeigniter authentication view controller

所以,假设我有一个名为pages的控制器。

使用此功能。

function __construct(){
parent::__construct();
$this->auth['result'] = $this->is_logged_in();
}

上面的代码调用了扩展函数“MY_Controller”,它具有一个名为is_logged_in()的函数,并且只是获取会话数据。

我的第一个问题是,我的身份验证是否正确?或者我只是在使用它?

无论如何,我的主要问题是关于加载视图。

假设我有很多观点,有些观点只能由TYPE访问,其访问级别与TYPE B用户的访问级别不同。

假设两个帐户的创建方式不同,例如在某些在线网站中,有用户和店主注册为其商店做广告,或者例如在线旅行。一个帐户是用户(普通/旅行者),一个帐户是旅馆所有者(拥有酒店irl)。所以两者都会有重叠的观点和一些专门的观点。

加载视图时如何处理?

在我的控制器中说我有功能,

public function view_home(){

}

public function view_userprofile(){

}

public function vieW_hotelprofile(){

}

你从上面得到我的想法,我有单独的功能来加载不同的视图。但我的问题是,我如何将其变成一个大功能呢?

例如,

public function view($page ='home' ){

}

视图功能就像是不同帐户访问视图的终端。

如果我不必检查access_levels,这会更简单。我的第一个想法就是制作一个很长的IF(){}ELSEIF(){}语句。

if($this->auth['result'] = 1 ){
load view here.
}

这是可以接受的吗?另外,我怎样才能有效地进行呢?关于身份验证,如果我以正确的方式使用它,这部分我真的很困惑。

另外,如果我做了很长的if语句,我会检查什么值?就像我知道你必须检查某些视图的访问级别,但我是否也检查登录的用户名,如果它的访问级别相同,则将其与数据库匹配?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用开关案例

    public function loadView()
    {
            switch($this->auth['result']){
            case 1:
                $view= "home";
                break;
            case 2:
                $view= "userprofile";
                break;
            case 3:
                $view= "hotelprofile";
                break;          
            default:
                $view= "Welcome";
                break;

        }       
     $this->load->view($view);
    }