2015-07-28 16 views
7

Mam dwie strony, które są prawie identyczne. Jedna pokazuje listę użytkowników, druga pokazuje tę samą listę, ale z bardziej szczegółowymi informacjami. Wywołuję dwa widoki, które rozszerzają to samo opakowanie. Jednak Laravel skarży się, że $ użytkownik nie jest zdefiniowany w verbose.blade.php. Przechodzę użytkowników $ do widoku, który wydaje się być dostępny dla content.blade.php, ale $ user, który jest tworzony w pętli foreach, nie wydaje się być dostępny w verbose.blade.php.Laravel Blade @yield zmienna zakres

verbose.blade.php

@extends('layout.content') 

@section('user') 
    {{ dd($user) }} 
@endsection 

nonverbose.blade.php

@extends('layout.content') 

@section('user') 
    {{ dd($user) }} 
@endsection 

content.blade.php

@extends('layout.app') 

@section('content') 
    @foreach($users as $user) 
     @yield('user') 
    @endforeach 
@endsection 

Próbowałem również @yield('user', ['user' => $user])

W jaki sposób chciałbym uzyskać $ user available w verbose.blade.php?

+0

tylko z ciekawości (wiem, że to naprawi błąd, ale nie wiem, czy byłby to roztwór) czy włączyłeś użytkownika jako wartość w funkcji kontrolera 'widok zwrotny ('verbose ", kompaktowy (" użytkownicy "," użytkownik "))"? –

+0

Zakładam, że kontroler ma coś takiego jak 'return view ('verbose', kompaktowy ('users');'? –

+0

Jeśli to nie jest Laravel 3, nie powinieneś używać '@ endsection' zamiast tego' try '' – saadel

Odpowiedz

0

dostać ten błąd z powodu kolejności laravel analizuje szablony ostrze w.

Czasami programiści dostać więc skończony w naszej „Nie powtarzaj się (DRY)” zasadą, że bierzemy go zbyt daleko. Jest to jeden z tych czasów - należy po prostu umieścić pętlę foreach bezpośrednio do verbose.blade.php:

@extends('layout.app') 

@section('content') 
    @foreach($users as $user) 
     @yield('user') 
    @endforeach 
@endsection 
+0

W foreach jest więcej informacji w content.blade.php Wolałbym nie umieszczać tego wszystkiego w moim pełnym ostrzu i nieobciążonym ostrzu, ale jeśli to muszę zrobić, zrobię to. – Votemike

2

Czy próbowali użyć @include?

+0

Podoba mi się również ta odpowiedź.Jeśli zrobił partials/user.blade.php, to działałoby ładnie –

+1

Gdybym miał to zrobić tak, jak chciałbym określić, czy chciałbym verbose lub nie-verbose częściowe? moje pytanie nie było jasne, że muszę się zmienić między dwoma widokami. Zaktualizuję pytanie. – Votemike