2015-06-10 13 views
5

Używam Laravel przez długi czas, a teraz piszę mikroprojektu za pomocą Lumen.Laravel/Lumen: View :: share() alternatywa?

Potrzebuję przekazać niektóre zmienne do wszystkich widoków. W Laravel mogę korzystać z funkcji View::share() w oprogramowaniu pośredniczącym lub w konstruktorze kontrolera, ale w Lumen nie ma klasy View i wygląda na to, że cała funkcjonalność widoku jest po prostu aliasem View::make().

Czy istnieje sposób udostępniania zmiennych dla wszystkich widoków?

Odpowiedz

3

Ze względów związanych z wydajnością firma Lumen nie rejestruje fasad i usługodawców tak, jak robi to firma Laravel. Podczas gdy fasady Laravel są dołączone do Lumen, tylko niektóre są aliasingowane (View nie jest jednym z nich) i tylko jeśli odkomentujesz linię $app->withFacedes(); w bootstrap/app.php (możesz sprawdzić metodę Laravel\Lumen\Application::withFacades, aby zobaczyć, które z nich). Tak, aby wykorzystać inne elewacje, takie jak View, albo trzeba alias klasa fasada siebie:

// "bootstrap/app.php" is a good place to add this 
class_alias('Illuminate\Support\Facades\View', 'View'); 

Albo można dołączyć go use gdziekolwiek potrzebne:

use Illuminate\Support\Facades\View; 
0

Prawidłowy sposób udostępniania dane z widokiem Lumen jest:

app('view')->share(...); 

Niektóre funkcjonalności laravel, że nie jest wyraźnie opisany w dokumentacji Lumen można uzyskać z tych Lumen app() funkcja pomocnika.