2015-08-02 16 views
5

sto cercando di inviare una variabile a lama vista, ma gettare questo errore:Non posso inviare una variabile a lama laravel 5.1

Variabile non definita: i dati (Vista: D: \ wamp \ www \ tienda \ Resources \ vista \ cliente.blade.php)

Questo è il mio percorso:

Route::resource('cliente','ClienteController'); 

Questo è il mio controller Cliente:

public function index(){ 

    $data = Cliente::all(); 

    return view('cliente',compact($data)); 
} 

E la mia lama:

@foreach ($data as $user) 
     <tr> 
      <td>{{$user->nombre}}</td> 
     </tr> 
    @endforeach 

Quello che sto facendo di sbagliato?

Inoltre, se un provi a fare per esempio, questo controller Cliente:

public function index(){ 
    return view('cliente', ['name' => 'James']); 
} 

e Blade:

{{$name}} 

Che sì il lavoro ... Solo le variabili e gli array, non funziona.

risposta

4

Prova questo sul Controller:

public function index(){ 
    $data = Cliente::all(); 
    return view('cliente',compact('data')); 
} 

From the compact documentation: "Ogni parametro può essere una stringa contenente il nome della variabile, o un serie di nomi di variabili Il. array può contenere altri array di nomi di variabili al suo interno; compact() lo gestisce in modo ricorsivo. "

+1

Ohh! il metodo compatto riceve una stringa, non la variabile ... non la vedo ... Grazie mille. –

1

puoi provare in questo modo

public function index(){ 
$data['data'] = Cliente::all(); 
return view('cliente', $data); 
} 

Poi si può prendere in lama come questo

@foreach ($data as $user) 
    <tr> 
     <td>{{$user->nombre}}</td> 
    </tr> 
@endforeach