2010-12-01 22 views
16

J'ai un contrôleur et comprenant deux vues d'une fonction comme ci-dessousCodeIgniter: transmettre des données à une vue incluse dans une vue

$this->load->view('includes/header',$data); 
$this->load->view('view_destinations',$data); 

Le fichier de vue view_destinations.php comprenant un fichier de menu php comme suit

<? $this->load->view('includes/top_menu'); ?> 

Ma question est, comment puis-je transmettre les données qui sont récupérées à partir du contrôleur à celui inclus top_menu.php?

Merci les gars

Répondre

25

l'intérieur de votre contrôleur, ont

$data['nestedView']['otherData'] = 'testing'; 

avant votre point de vue comprend.

Lorsque vous appelez

$this->load->view('view_destinations',$data); 

le fichier view_destinations va avoir

$nestedView['otherData']; 

Que vous pouvez à ce moment-là, passer dans le fichier de vue imbriqué.

<? $this->load->view('includes/top_menu', $nestedView); ?> 

Et dans votre fichier top_menu vous devriez avoir $otherData contenant 'test'.

1

Ce message forum Codeigniter devrait vous aider;)

Vous pouvez faire vos données $ (exemple) global dans le contrôleur, ou passer juste comme @castis mentionné à l'intérieur de votre vue (uniquement des variables dans votre vue)

plus de détails ici: http://codeigniter.com/forums/viewthread/88335/

5

solution de Castis, ouvrages

si vous voulez le faire à un niveau plus finement grainée, vous pouvez utiliser:

//in your controller 
$data['whatever'] = 'someValue'; 

.

//In your view 
echo $whatever //outputs 'someValue'; 

//pass $whatever on 
$this->load->view('some/view', Array('whatever' => $whatever)); 
+0

J'aime cette méthode mieux. J'ai réalisé que c'était possible quand j'ai pris du recul et réfléchi à la façon dont CI gère les variables transmises par le contrôleur. Agréable et propre. – twistedpixel

1

Je l'ai vu dans mes dossiers de vue, si je passe les données du contrôleur pour visualiser et de ce point de vue pour afficher les fichiers imbriqués inclus. il n'y a pas besoin de transférer

$ data

pour votre vue imbriquée il est déjà disponible. vous pouvez y accéder directement, dans votre vue intérieure.

0

Essayez aussi cela si vous voulez chaque données de vue CodeIgniter dans un sous-vue:

echo $this->view('subview', get_defined_vars()['_ci_data']['_ci_vars'])