2016-06-19 2 views
1

Ich habe diese Dokumentation gefolgt Daten an alle meine Ansichten weitergeben müssen:Pass-Daten für alle Ansichten und nutzen sie in Routen

https://laravel.com/docs/5.2/views#sharing-data-with-all-views

Allerdings ist es nicht lassen Sie mich auf die Variablen in meinem Routen-Datei.

Wie kann ich eine Variable an alle meine Ansichten weitergeben und sie in meiner Routes-Datei über alle meine Routen verwenden können?

+0

Können Sie uns ein Beispiel geben, was Sie zu tun versuchen? Und was hast du probiert? – James

Antwort

0

Ich denke, Sie sollten Session (oder Zwischenspeichern der Daten)

Ich denke, mit Sitzungen ist der beste Weg, hier

lässt vermuten Sie some auf die aktuelle Benutzersitzung

Session::put('key', 'value'); 
hinzufügen möchten

jetzt können Sie in Ihrer View zugreifen diese ähnliche

Session::get('key'); 

und in Ihrem Controller/Routen-Datei

$value = Session::get('key'); 

diese Weise werden die Daten zur Verfügung stehen innerhalb Controller, Routen-Datei und Ansichten

+0

Was passiert, wenn einige der Benutzerdaten geändert werden (z. B. wenn der Benutzer seine Einstellungen ändert)? Würden diese Daten nicht zwischengespeichert und daher falsch sein, wenn der Cache nicht aktualisiert wurde? – user6484209

+0

das heißt, wenn Sie Cache verwenden, können Sie den Cache löschen, können Sie eine Modellbeobachter erstellen, die den Cache löscht onsetup/update .. etc, das gleiche gilt für Sitzungen, immer wenn der Benutzer Änderungen vornimmt, in der gleichen Zeit den Sitzungswert aktualisieren –

1

Sie müssen sich über Ihren Prozess denken. Der Zweck der Weitergabe eines bestimmten Datenelements an alle Ansichten besteht darin, dass dieser Wert für die Ansicht und nicht für die Route oder die Controller-Aktion relevant ist. Zum Beispiel, Seitentitel oder zeigt dem Benutzer das aktuelle Datum am Ende der Seite.

zu tun, was Sie wollen, für Illuminate\View\View einen Blick auf die API-Dokumentation und Sie werden offsetGet und offsetSet Funktionen sehen.

Hier ist ein Beispiel:

app/Anbieter/AppServiceProvider.php

<?php 

namespace App\Providers; 

class AppServiceProvider extends ServiceProvider 
{ 
    public function boot() 
    { 
     view()->share('title', 'Qevo'); 
    } 

    public function register() 
    { 
     // 
    } 
} 

Ressourcen/views/example.blade.php

<h1>{{ $title }}</h1> 

app/Http/routes.php

Route::get('/test', function() { 
    // view has to be created for shared data to be set 
    $v = view('example'); 

    // get the value of the shared data 
    $page_title = $v->offsetGet('title'); 

    // set a new value 
    $v->offsetSet('title', $page_title . ' helps'); 

    return $v; 
});