2017-01-21 7 views
1

Как передать данные laravel от контроллера к представлениям без получения неопределенных переменных продуктов?Передача данных контроллера Laravel на вид

Контроллер:

public function postSearch(Request $request){ 

    $text = $request->input('txtsearch'); 


$products = DB::table('products')->where('title', 'Like', $text)->get(); 


return redirect()->route('product.search', ['products' => $products]); 

} 

Вид:

@extends('Layout.master') 

@section('content') 

@foreach($products as $product) 


{{$product->title}} 



@endforeach 

    @endsection 
+0

я не вижу переменную «имя» там? – aimme

+0

Обновлен мой вопрос. – steven

+0

Код кажется правильным .. но вы можете ошибаться в представлении – aimme

ответ

0

При перенаправлении, вы должны использовать with() прошить данные в сессии:

return redirect()->route('product.search')->with(compact('products')); 

А затем получить данные из сессии:

@foreach(session('products') as $product) 
+1

Вы решили мой вопрос. – steven

+1

Безопасно ли это флэш-данные в сеанс? – steven

+0

Да, это безопасно. –

0

https://laravel.com/docs/5.3/redirects#redirecting-with-flashed-session-data

Перенаправление на новый URL и мигающим данных на сессии, как правило, делается в то же самое время. Как правило, это выполняется после успешного выполнения действия при отправке сообщения об успешном завершении сеанса. Для удобства, вы можете создать экземпляр RedirectResponse и данные флэша на сессию в одном, беглом методе цепи:

return redirect('dashboard')->with('status', 'Profile updated!'); 

После того, как пользователь перенаправляется, вы можете отобразить прошило сообщение от сессии. Например, с помощью синтаксиса клинка:

@if (session('status')) 
    <div class="alert alert-success"> 
     {{ session('status') }} 
    </div> 
@endif 
0

В @foreach, вы должны определить переменную $products, потому что в контроллере вы определяете ее как ['products' => $products]

Вы опечатка в коде, попробуйте этот код вместо:

@extends('Layout.master') 

@section('content') 

@foreach($products as $product) 

    {{$product->title}} 

@endforeach 

@endsection 

Надежда, что помогает

+0

Нет, это не работает, все еще не получилось undefined - продукты – steven

+0

вы уверены, что изменили его на '@foreach ($ products as $ product)'? ваш код был '@foreach ($ product as $ products)', обязательно измените его и убедитесь, что вы вызываете правильную переменную '{{$ product-> title}}' –

+0

ваш код кажется хорошим, я боюсь это просто опечатка в функции '@ foreach' –

Смежные вопросы