2017-01-21 14 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

私はそこに「名前」の変数を参照してくださいいけないのに役立ちます

@extends('Layout.master') @section('content') @foreach($products as $product) {{$product->title}} @endforeach @endsection 

希望:

あなたが代わりにこのコードを試してみてください、あなたのコードのタイプミスがありますか? – 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を定義する必要があります

+0

これはまだ未定義ではありません - 製品 – steven

+0

あなたは '@foreach($ products as $ product)'に変更してもよろしいですか?あなたのコードは '@foreach($ product as $ products)'だったので、それを変更して、正しい変数 '{{$ product-> title}}'を呼び出してください –

+0

あなたのコードは良いようです、私は恐れています'@ foreach'関数の入力ミスです。 –

関連する問題