2015-07-28 22 views
7

Ho due pagine che sono quasi identiche. Uno mostra un elenco di utenti, l'altro mostra lo stesso elenco, ma con informazioni più dettagliate. Quindi sto chiamando due viste che estendono lo stesso wrapper. Tuttavia, Laravel lamenta che $ user non è definito in verbose.blade.php. Sto passando $ utenti alla vista che sembra essere disponibile per content.blade.php ma l'utente $ che è stato creato all'interno del ciclo foreach non sembra essere accessibile in verbose.blade.php.Laravel Blade @ scope variabile scope

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 

Ho anche provato @yield('user', ['user' => $user])

Come dovrei fare per rendere disponibile $ user in verbose.blade.php?

+0

solo per curiosità (so che questo risolverebbe l'errore, ma non so se sarebbe una soluzione) hai incluso l'utente come valore nella funzione del controller 'return view ('verbose ', compatto (' utenti ',' utente ')) '? –

+0

Presumo che il tuo controller abbia qualcosa come 'return view ('verbose', compact ('users');'? –

+0

Se questo non è Laravel 3 non dovresti usare '@ endection' prova' @ stop' invece. – saadel

risposta

0

Si ottiene questo errore a causa del modo che laravel analizza modelli di pale in.

A volte noi programmatori ottenere così radicata nel nostro "do not repeat yourself (DRY)" principio che lo prendiamo troppo lontano. Questo è uno di quei momenti - si dovrebbe semplicemente mettere il ciclo foreach direttamente in verbose.blade.php:

@extends('layout.app') 

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

In realtà ci sono più informazioni nel foreach in content.blade.php Preferisco non mettere tutto ciò nel mio blade verbose e nonverbose, ma se è quello che devo fare, lo farò. – Votemike

2

Forse hanno tentato di usare @include?

+0

Anche questa risposta mi piace Se ha creato partial/user.blade.php, funzionerebbe bene –

+1

Se dovessi farlo in questo modo, come dovrei specificare se volevo il partial verbose o non verbose? la mia domanda non era chiara che dovevo cambiare tra due visualizzazioni. Aggiornerò la domanda – Votemike

Problemi correlati