2017-02-01 17 views
0

所以,假设我有一个名为页面的控制器。更好的方式来加载视图Codeigniter3

具有此功能。

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

上面的代码,要求扩展功能“MY_Controller”,其有一个称为is_logged_in()函数并且将简单地获取会话数据。

我的第一个问题是,我在做这个认证是否正确?或者我只是在使用它?

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

说我有很多视图,有些视图只能由具有不同于TYPE B用户访问级别的TYPE A用户访问。

说这两个帐户的创建方式不同,就像在一些在线网站中有用户和店主注册以宣传他们的商店或例如在线旅行一样。一个帐户是用户(普通/旅客),一个帐户是酒店老板(拥有一家酒店)。所以两者都会有重叠的观点和一些专门的观点。

加载视图时我该如何处理它?

说,在我的控制,我得到的功能,

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语句,我会检查什么值?就像我知道你必须检查某些视图的访问级别,但是我也检查登录的用户名并将它与数据库匹配,如果它的访问级别是相同的?

回答

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); 
    } 
+0

什么是与if语句之间的区别? 交换机是否更适合于有很多条件,因此有很多相应的结果? –

+0

您可能会查看[http://stackoverflow.com/questions/680656/what-is-the-difference-between-if-else-and-switch] –

相关问题