2017-02-01 2 views
0

Also sagen wir, ich habe einen Controller namens Seiten.Bessere Möglichkeit zum Laden von Ansichten Codeigniter3

mit dieser Funktion.

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

Der obige Code, fordert die erweiterte Funktion ‚MY_Controller‘, die eine Funktion is_logged_in() hat angerufen und einfach Session-Daten holen.

Meine erste Frage wäre, mache ich diese Authentifizierung richtig? oder verwende ich es einfach zu wenig?

Wie auch immer, meine Hauptfrage betrifft das Laden von Ansichten.

Angenommen, ich habe viele Ansichten, auf einige Ansichten wird nur von TYPE A-Benutzern zugegriffen, die eine andere Zugriffsebene als TYPE B-Benutzer haben.

Angenommen, beide Konten werden anders erstellt, wie in einigen Online-Websites, auf denen sich Benutzer und Ladenbesitzer registriert haben, um für ihren Shop zu werben, oder zum Beispiel Online-Reisen. Ein Konto ist Benutzer (normal/Reisende) und ein Konto ist Hotelbesitzer (besitzt ein Hotel irl). Also werden beide sich überschneidende Ansichten und einige spezielle Ansichten für sie haben.

Wie gehe ich vor beim Laden von Ansichten?

Say in meinem Controller i-Funktionen bekam,

public function view_home(){ 

} 

public function view_userprofile(){ 

} 

public function vieW_hotelprofile(){ 

} 

Sie meine Idee von oben, habe ich verschiedene Funktionen für verschiedene Ansichten zu laden. Aber meine Frage ist, wie gehe ich daran, es zu einer großen Funktion zu machen?

wie zum Beispiel

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

} 

die View-Funktion wie ein Terminal für verschiedene Konten würden die Ansichten zugreifen.

Dies wäre einfacher, wenn ich access_levels nicht überprüfen muss. Meine erste Idee ist, eine sehr lange IF(){}ELSEIF(){} Aussage zum Beispiel zu machen.

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

ist das akzeptabel? Wie würde ich darüber hinaus effizient vorgehen? und in Bezug auf die Authentifizierung, diesen Teil bin ich wirklich verwirrt, wenn ich es richtig benutze oder nicht.

Auch wenn ich jemals eine sehr lange if-Anweisung mache, welche Werte würde ich überprüfen? Wie ich weiß, müssen Sie die Zugriffsebene für bestimmte Ansichten überprüfen, aber überprüfe ich auch den Benutzernamen angemeldet und passen Sie es an die Datenbank, wenn Accesslevel gleich ist?

Antwort

0

können Sie versuchen, Schaltergehäuse mit

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

Was zwischen diesem und der if-Anweisung ist der Unterschied? Ist der Schalter besser geeignet, wenn viele Bedingungen vorliegen und daher viele entsprechende Ergebnisse? –

+0

Vielleicht haben Sie [http://stackoverflow.com/questions/680656/what-is-the-difference-between-if-else-and-switch] angeschaut. –

Verwandte Themen