【问题标题】:Passing Laravel's controller data to a view将 Laravel 的控制器数据传递给视图
【发布时间】:2017-01-22 01:40:23
【问题描述】:

如何在不获取未定义变量产品的情况下将 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

【问题讨论】:

  • 我在那里没有看到“名称”的变量?
  • 更新了我的问题。
  • 代码看起来是对的..但你可能看错了
  • 你为什么不使用 view() 助手?

标签: php laravel


【解决方案1】:

重定向时,应使用with() 将数据闪存到会话中:

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

然后从会话中获取数据:

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

【讨论】:

  • 虽然将数据闪存到会话中是否安全?
  • 是的,它是安全的。
  • 你能解释一下为什么我的代码一开始就不起作用吗?只是好奇。
  • @steven 因为你没有传递任何数据。当您使用重定向时,您需要将数据闪存到会话中。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    @foreach 中,您必须定义变量 $products 因为在控制器中您将其定义为 ['products' =&gt; $products]

    您的代码中有错字,请尝试以下代码:

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

    希望有帮助

    【讨论】:

    • 不,这不起作用仍然不确定 - 产品
    • 您确定将其更改为@foreach($products as $product) 吗?您的代码是 @foreach($product as $products) ,请务必更改它,并确保调用正确的变量 {{$product-&gt;title}}
    • 你的代码看起来不错,恐怕只是@foreach函数中的错字
    • 我有一个使用会话的解决方案。不过感谢您的回复。
    • 我在错误的代码中发布了抱歉,它应该是 $product 作为 $product - 从一开始就不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2018-03-20
    • 2019-12-26
    相关资源
    最近更新 更多