2012-02-22 18 views
25

He estado trabajando con CI y vi en el sitio web de CI que puede cargar una vista como una parte variable de los datos que envía a la vista "principal", por lo que, según el sitio (eso dice muchas cosas, y muchos no están como dicen ... paginación EJ y otros) he hecho algo como estocómo cargar la vista en otra vista codeigniter 2.1?

$data['menu'] = $this->load->view('menu'); 
$this->load->view ('home',data); 

el resultado de esto es que consigo un eco del menú en la parte superior de la página (antes del inicio de mi cuerpo y todo) y donde debería ser su nada, como si se imprimiera antes que todo ... No tengo idea honestamente de este problema, ¿alguien antes había tenido el mismo problema?

Respuesta

68

Dos maneras de hacer esto:

  1. carga con antelación (al igual que está haciendo) y pasar a la otra vista

    <?php 
    // the "TRUE" argument tells it to return the content, rather than display it immediately 
    $data['menu'] = $this->load->view('menu', NULL, TRUE); 
    $this->load->view ('home', $data); 
    
  2. Cargar una visión "desde dentro", una Ver:

    <?php 
    // put this in the controller 
    $this->load->view('home'); 
    
    // put this in /application/views/home.php 
    $this->view('menu'); 
    echo 'Other home content'; 
    
+0

Hola, muchas gracias, yo iba a responder a esta pregunta, pero mis puntos de doesnt de usuario permiten que lo haga ... el problema era el tercer parámetro FALSO, no sabía ... gracias gracias – jpganz18

+0

. Nulo es el parámetro más importante en esta condición. –

+0

La forma 1 es simple y útil sin ninguna biblioteca. Gracias. –

7

crear una diversión ayudante ction

function loadView($view,$data = null){ 
    $CI = get_instance(); 
    return $CI->load->view($view,$data); 
} 

Cargue el helper en el controlador, luego use la función en su vista para cargar otro.

<?php 
... 
    echo loadView('secondView',$data); // $data array 
... 
?> 
Cuestiones relacionadas