将Laravel的控制器数据传递给视图

时间:2017-01-21 17:27:01

标签: php 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

3 个答案:

答案 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

希望有所帮助