2011-09-28 5 views
1

Puis-je définir une variable dans le fichier de vue?Codeigniter - Définir une variable dans la vue

pour exemple: J'ai un contrôleur: welcome.php Sa charge:

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

je besoin de définir une variable dans le dossier main.php et obtenir le footer.php

Il est possible?

+0

Voulez-vous dire que vous voulez définir une variable dans la vue pour une utilisation ultérieure? Parce que, bien sûr, vous pouvez définir des variables en HTML en utilisant PHP standard: ' '. – Alex

Répondre

3

Il n'est pas possible de définir une variable dans un fichier de vue et d'y accéder depuis un autre. Il n'y a aucune raison pour que vous définissiez des variables dans vos fichiers de vue de toute façon. Le contrôleur doit gérer toute la logique de votre application, vous devez donc définir la variable ici. Je recommande de lire le guide de l'utilisateur ou en regardant quelques articles pour mieux comprendre les principes MVC.

Pour accéder à la même variable dans plusieurs vues, passez-la à chaque vue chargée.

// Set your variable 
$data['variable'] = 'value'; 

// Pass variable to multiple views 
$this->load->view('main', $data); 
$this->load->view('footer', $data); 
+0

Vous pouvez définir une variable dans une vue et l'utiliser dans une autre dans le codeigniter. Je le fais tout le temps. J'ai posté ma réponse ci-dessous. –

+0

Il ne s'agit pas toujours de variables liées au modèle, birderic. Par exemple, je l'utilise pour définir les noms de certains javascripts dans la vue "content", puis charger ces fichiers dans la vue pied de page, après tout le contenu HTML. –

1

Vous pouvez passer à la fois tableau ou objet à votre point de vue, par exemple:

$data = new StdClass; 
$data->title = "The Title"; 
$data->content = "The Content"; 

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

ou

$data = new SomeClass; 
$this->load->view('main', $data); 

En outre, dans chaque vue que vous êtes en mesure de passer des données différentes:

$data1 = array("key" => "val"); 
$data2 = $this->some_class->some_method($params); 
$data3 = $this->another_class->another_method($params); 

$this->load->view('navigation', $data1); 
$this->load->view('main', $data2); 
$this->load->view('footer', $data3); 
5

Vous pouvez passer une variable d'une vue à l'autre, comme vous le feriez d'un contrôleur vers une vue. Il suffit de charger le fichier de vue qui définit cette variable avant la vue qui utilise cette variable:

$this->load->view('main'); //load before 
$this->load->view('footer'); //load after 

A l'intérieur de main.php faire $this->load->vars(array('your_variable'=>'it's value')); et vous serez en mesure d'appeler dans le pied de page comme vous le feriez pour tout autre variable. La seule exigence est que main.php soit chargé avant footer.php.

+0

Il n'est pas recommandé de définir des variables à l'intérieur des vues. Si vous utilisez cette méthode, il est préférable d'appeler '$ this-> load-> vars()' depuis le contrôleur plutôt que depuis la vue, de cette façon vous n'avez pas à vous soucier de l'ordre dans lequel vous êtes charger les vues. – birderic

+2

@birderic absolument. Je le fais seulement dans une extrémité des cas. La question ne concerne pas les meilleures pratiques, mais la façon de charger des variables à partir d'une vue. –

Questions connexes