如何在不获取未定义变量产品的情况下将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 :(得分:0)
https://laravel.com/docs/5.3/redirects#redirecting-with-flashed-session-data
重定向到新URL并将数据闪烁到会话通常是在同一时间完成的。通常,在将成功消息闪烁到会话后成功执行操作后,即可完成此操作。为方便起见,您可以在单个流畅的方法链中创建RedirectResponse实例并将数据闪存到会话中:
return redirect('dashboard')->with('status', 'Profile updated!');
重定向用户后,您可以显示会话中的闪烁消息。例如,使用Blade语法:
@if (session('status')) <div class="alert alert-success"> {{ session('status') }} </div> @endif
答案 1 :(得分:0)
重定向时,您应使用with()
将数据刷新到会话中:
return redirect()->route('product.search')->with(compact('products'));
然后从会话中获取数据:
@foreach(session('products') as $product)
答案 2 :(得分:0)
在@foreach
中,您必须定义变量$products
,因为在控制器中您将其定义为['products' => $products]
您的代码中有拼写错误,请尝试使用此代码:
@extends('Layout.master')
@section('content')
@foreach($products as $product)
{{$product->title}}
@endforeach
@endsection
希望有所帮助