In Laravel 4 verwendet mein Controller ein Blade-Layout:
class PagesController extends BaseController {
protected $layout = 'layouts.master';
}
Das Master-Layout hat den Variablentitel ausgegeben und zeigt dann eine Ansicht an:
...
<title>{{ $title }}</title>
...
@yield('content')
....
In meinem Controller kann ich jedoch anscheinend nur Variablen an die Unteransicht übergeben, nicht an das Layout. Eine Aktion könnte beispielsweise sein:
public function index()
{
$this->layout->content = View::make('pages/index', array('title' => 'Home page'));
}
Dadurch wird die $title
Variable nur an den Inhaltsbereich der Ansicht übergeben. Wie kann ich diese Variable für die gesamte Ansicht oder zumindest für das Master-Layout bereitstellen?
@component('alert', ['foo' => 'bar'])
......Für zukünftige Google-Benutzer, die Laravel 5 verwenden, können Sie es jetzt auch mit Includes verwenden:
quelle
Ich konnte dieses Problem lösen, indem ich dies meiner Controller-Methode hinzufügte:
$ this-> layout-> title = 'Homepage'; hat auch nicht funktioniert.
quelle
In der Blade-Vorlage: Definieren Sie eine Variable wie diese
Und in der app.blade.php oder einer anderen Ihrer Wahl (ich folge nur dem Standard-Laravel 5-Setup)
Dies ist meine erste Antwort hier. Hoffe es funktioniert. Viel Glück!
quelle
{{ $title ?? 'Default Title' }}
Einfachste Lösung:
Oder mit Ansicht Fassade:
quelle
Es scheint, als ob ich mithilfe von Attributen für das Layoutobjekt Variablen an das gesamte Layout übergeben kann. Um beispielsweise mein Problem zu lösen, konnte ich Folgendes tun:
quelle
Denken Sie in der Blade-Vorlagendatei daran, @ vor der Variablen zu verwenden.
quelle
Du kannst es versuchen:
quelle
Probieren Sie einfach diese einfache Methode aus: im Controller: -
Und in Ihrem Layout (app.blade.php):
Das ist alles.
quelle
Wenn Sie die Variablen von Abschnitten erhalten möchten, können Sie wie folgt bezahlen:
quelle
Ich habe dies bisher getan, weil ich sowohl in der Ansicht als auch in der Master-Datei brauchte. Wenn Sie $ this-> layout-> title nicht verwenden, ist es anscheinend nicht im Master-Layout verfügbar. Verbesserungen willkommen!
quelle