2010-11-17 4 views
0

Je suis novice en matière d'amorçage de code et je suis encore en train d'apprendre les meilleures pratiques.allumeur de code :: inclut?

Dans mon site j'ai deux menus,

Un pour les utilisateurs qui sont connectés.

Un pour les utilisateurs qui sont déconnectées.

Je les ai dans deux fichiers dans le dossier views.

Ma question est:

Comment dois-je m'y y compris ceux-ci?

ma meilleure estimation est de

dans l'appel du contrôleur

if($loggedin) 
    $menu = $this->load->view('loggedin', true); 
else 
    $menu = $this->load->view('loggedout', true); 
$this->load->view('main', array('menu' => $menu)); 

Donc, passez essentiellement le code de menu correct dans la vue et l'écho cela.

Y a-t-il une meilleure façon de procéder?

Répondre

2

vous pouvez briser le strict MVC et quelque chose comme ceci dans votre vue:

<?php 
// in your controller or when the user logs in: 
$this->session->set_userdata('logged_in', 'true'); 
?> 

vue:

<?php 
    // Logged in? 
    if (! $this->session->userdata('logged_in') { 
     $this->load->view('loggedout'); 
    } else { 
     $this->load->view('loggedin'); 
    } 
?> 

se rappellent MVC est un concept, il n'est pas gravé dans la pierre.

1

Vous pouvez charger autant de vues que vous le souhaitez dans la fonction. Ainsi, par exemple:

if($loggedin){ 
    $this->load->view('loggedin'); 
} else { 
    $this->load->view('loggedout'); 
} 

$this->load->view('main'); 

Rend l'opération un peu plus propre mais probablement une économie d'efficacité négligeable.

0

Je vous suggère d'utiliser des plugins.

mis cela dans du plugin

if($loggedin) 
    $menu = $this->load->view('loggedin', true); 
else 
    $menu = $this->load->view('loggedout', true); 
+0

Les plugins sont supprimés à partir de CI2.0, mais dans le cas contraire, il s'agit d'une option. Semble trop juste pour un menu cependant. – Ross

Questions connexes