2012-07-20 9 views
5

Wenn ich dies in meinem ControllerDaten zu betrachten, übergeben, nicht zugänglich in Layout - Laravel Controller

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

ich nur die Daten in $array innerhalb der home.index.blade.php Vorlagendatei zugreifen können und NICHT in der layouts.main, die ich verwende.

Das Layout & die Ansicht korrekt geladen, kann ich nicht auf alle Daten zugreifen, die in einem Controller aus der Layoutdatei übergeben.

Wer da draußen kann helfen?

Um zu klären - Sagen wir, ich wollte eine title Variable an meine Layout.main übergeben, wie würde ich darüber gehen? Die Methode, die ich oben gepostet habe, erlaubt mir nur den Zugriff auf $array aus dem 'Inhalt' von index.blade.php

Antwort

7

Um Daten an das Layout zu übergeben, verwenden Sie den ersten Parameter als Name der Variablen.

Was geschieht, wenn Sie dies tun:

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

nistet die Ansicht home.index, die einen Parameter von $ array nimmt. Sie erstellen keine Variable, die im Layout verwendet werden kann.

Die Variable, die Sie für das Layout erstellen, ist $ content, die den Inhalt der übergebenen Ansicht anzeigt. Dies ist spezifisch für die Methode 'nest'.

Wenn Sie in die API schauen, werden Sie feststellen, dass ‚Layout‘, wie in der Steuerung deklariert ist eine Instanz: Laravel\View

Dieses eine Methode namens hat with, die Variablen zu der Ansicht liefert.

Um es so etwas wie dies versucht zu verwenden:

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

Eine andere Lösung der Daten zur Verfügung über alle Ihre Ansichten mit

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

könnte nützlich sein, um jedermann Zugang zu machen, ist zu lassen.

Verwandte Themen