2010-12-01 34 views
16

Tengo un controlador y que incluye dos vistas de una función como abajoCodeIgniter: pasar datos a una vista incluida en una vista

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

El archivo de vista view_destinations.php incluyendo un archivo de menú php como sigue

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

Mi pregunta es, ¿cómo puedo pasar los datos que se obtienen del controlador a este incluido top_menu.php?

Gracias chicos

Respuesta

25

Dentro de su controlador, tienen

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

antes de que su visión incluye.

Cuando se llama a

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

el archivo view_destinations va a tener

$nestedView['otherData']; 

que se puede en ese momento, pasar al archivo de vista anidada.

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

Y dentro de su archivo top_menu usted debe tener $otherData contenga 'prueba'.

1

Este mensaje del foro CodeIgniter debe ayudarle;)

Usted puede hacer que sus datos (ejemplo) $ globales en el controlador, o pasar al igual que @castis mencionado desde su punto de vista (sólo las variables en su opinión)

más detalles aquí: http://codeigniter.com/forums/viewthread/88335/

5

solución de Castis works

por eso si usted quiere hacer esto en un nivel más grano fino se puede utilizar:

//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

me gusta este método mejor. Me di cuenta de que esto era posible cuando dí un paso atrás y pensé en cómo maneja CI las variables pasadas desde el controlador. Bonito y limpio. – twistedpixel

1

que he visto en mis archivos de vista, si estoy pasar datos desde el controlador para ver y desde ese punto de vista para ver archivos anidados incluidos. no hay necesidad de transferir

$

datos

para su vista anidada que ya está disponible. puede acceder directamente a él, dentro de su vista interna.

0

También intente esto a si desea que todos y cada uno de CodeIgniter ver datos en una vista secundaria:

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