【问题标题】:Not passing data through to blade file不将数据传递到刀片文件
【发布时间】:2021-04-20 07:46:59
【问题描述】:

我正在尝试将一些数据发送到刀片文件,但我没有得到任何东西,它只是返回到页面 不显示消息。

这是我的控制器代码

    public function missingProducts(Category $category)
    {
        $oldProducts = Product::where('category', $category->id)->get();
        $newProducts = Product::where('category', request('category'))->get();

        $oldArr = [];
        foreach($oldProducts as $oldProduct)
        {
            $oldArr[] = $oldProduct->name;
        }

        $newArr = [];
        foreach($newProducts as $newProduct)
        {
            $newArr[] = $newProduct->name;
        }

        $missingProducts = array_diff($oldArr, $newArr);

        if(!empty($missingProducts))
        {
            return redirect()->route('admin.category', ['category' => $category->id])
                                    ->with(['missingProducts' => $missingProducts]);
        }else{
            dd('there is NO products missing');
        }
    }

我的刀片文件

    @if(!empty($missingProducts))
        <div class="alert alert-success">
            We are missing products
        </div>
    @endif

【问题讨论】:

  • 你的控制器唯一能做的就是返回一个重定向或死掉,所以这里没有涉及到视图......如果你想重定向到另一个页面,那么数据将在会话中,不是视图数据laravel.com/docs/8.x/… 的一部分,它将向您展示闪现的会话数据如何工作以及如何在视图中访问它
  • 另外,为刀片视图提供的数据可以(并且应该)写成return redirect()-&gt;route('admin.category', ['category' =&gt; $category-&gt;id, 'missingProducts' =&gt; $missingProducts]),甚至更好的是return redirect()-&gt;route('admin.category', compact('category', 'missingProducts'));
  • @Tpojka 似乎应该刷新会话数据而不是请求的输入,至少是 missingProducts 部分......然后他们的这种方法本身似乎很奇怪
  • @lagbox 你说的很对。我实际上是指view() helper,并没有以最佳方式阅读问题。我会继续发表评论,让您的评论更有意义。 :D

标签: laravel laravel-8


【解决方案1】:

由于您使用-&gt;with(['missingProducts' =&gt; $missingProducts]) 返回数据,因此它存储在闪存会话中。这意味着数据将仅可用一次(在第一次重定向时)。为了读取该数据,您不能使用变量,但您需要从会话中获取它:

@if(!session()->has('missingProducts'))
  <div class="alert alert-success">
      We are missing products
  </div>
@endif

你可以在官方documentation阅读更多关于闪现的会话数据

【讨论】:

    【解决方案2】:

    您正在将用户重定向到一个路由,因此您需要在 url 中附加您的数据值以在刀片中使用它们,或者您必须先在会话中设置它,然后在 url 上重定向,您可以通过会话访问如果这是必需的情况,否则您需要返回视图然后传递您想要的数据。

    【讨论】:

      猜你喜欢
      • 2020-05-19
      • 2018-08-24
      • 2016-06-25
      • 2022-01-01
      • 2017-02-24
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      • 2021-07-05
      相关资源
      最近更新 更多