2012-07-20 18 views
5

Se ho questo nel mio controllerdati passati per vedere, non accessibile nel layout - Controllori laravel

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

posso accedere solo ai dati in $array all'interno del file di modello home.index.blade.php e NON nel layouts.main che sto usando.

Il layout & la vista viene caricata correttamente, non riesco ad accedere ai dati passati in un controller dal file di layout.

Chiunque può aiutare?

Per chiarire - Dire che volevo passare una variabile title al mio layout.main, come potrei fare a riguardo? il metodo che ho postato sopra mi consente solo di accedere a $array dal "contenuto" di index.blade.php

risposta

7

Per passare i dati al layout, utilizzare il primo parametro come nome della variabile.

Quello che sta accadendo quando si sta facendo questo:

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

nidifica il home.index vista che prende un parametro di $ array. Non stai creando una variabile che può essere utilizzata nel layout.

La variabile che si sta creando per il layout è $ contenuto che visualizzerà il contenuto della vista passata ad esso, questo è specifico per il metodo "nest".

Se si guarda in API si noterà che 'Layout', come dichiarato nel controller è un esempio di: Laravel\View

Questo ha un metodo chiamato with che fornisce le variabili alla vista.

di usarlo provare qualcosa di simile:

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

Un'altra soluzione è quella di rendere i dati disponibili su tutti i vostri punti di vista con

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

potrebbe essere utile per permettere l'accesso a chiunque esso.

Problemi correlati