2017-01-21 145 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'函数中的错字 –

相关问题