2012-07-20 16 views
5

Si tengo esto en mi controlador dede datos para ver, no se puede acceder en la disposición - Controladores laravel

$this->layout->nest('content', 'home.index', $array);

sólo puedo acceder a los datos en $array dentro del archivo de plantilla home.index.blade.php , y NO en el layouts.main que estoy usando.

El diseño & la vista se carga correctamente, simplemente no puedo acceder a ningún dato pasado en un controlador desde el archivo de diseño.

¿Hay alguien por ahí que pueda ayudar?

Para aclarar: digamos que quería pasar una variable title a mi layout.main, ¿cómo lo haría? el método que publiqué arriba solo me permite acceder al $array desde el 'contenido' de index.blade.php

Respuesta

7

Para pasar datos al diseño, usa el primer parámetro como nombre de la variable.

qué está sucediendo cuando usted está haciendo esto:

$this->layout->nest('content', 'home.index', $array); 

anida la vista home.index que toma un parámetro de $ matriz. No está creando una variable que pueda usarse en el diseño.

La variable que está creando para el diseño es $ contenido que mostrará el contenido de la vista que se le pasó, esto es específico del método 'anidar'.

Si nos fijamos en el API se dará cuenta de que 'diseño', como declaró en el controlador es un ejemplo de: Laravel\View

Esto tiene un método llamado with que suministra las variables a la vista.

para usarlo probar algo como esto:

$this->layout->with('myVariable' , $variable_to_pass_to_layout) 
      ->nest('content', 'home.index', $array) 
0

Otra solución es hacer que los datos disponibles a través de todos sus puntos de vista con

View::share('myVariable', $variable_to_pass_to_layout);

podría ser útil para permitir el acceso a nadie ella.

Cuestiones relacionadas