【问题标题】:Laravel array index variable won't pass to redirected viewLaravel 数组索引变量不会传递给重定向视图
【发布时间】:2021-10-11 20:12:07
【问题描述】:

我的 $data['orders'] 不会传递到我的重定向视图,并且我收到错误“未定义的索引:订单(视图:/.../pages/userhome.blade.php)”。出于某种原因,$data['user'] 变量将通过并显示其值,但“订单”变量不会。我已经更改了名称以及为什么我创建数据数组的方式,但它仍然无法正常工作。

pagescontroller.php

        $this->validate($request, []);
        $data = array();
        $orderdate = date('Y-m-d H:i:s');
        $data['user'] = Auth::user();
        $ordernum = Str::uuid()->toString();
        $sum = 0;

        $cart = DB::table('cart')->where('buyerid', '=', auth()->user()->id)->paginate(10);

        foreach ($cart as $item) {

            $product = Product::find($item->itemid);
            $orderitem = new Orderitem;
            $orderitem->buyerid = $item->buyerid;
            $orderitem->productid = $product->id;
            $orderitem->quantity = $item->quantity;
            $orderitem->ordernumber = $ordernum;
            $orderitem->dateordered = $orderdate;
            $sum = $sum + (number_format($product->price * $item->quantity, 2));
            $product->sold = $product->sold + $item->quantity;
            $orderitem->save();
        }

        $order = new Order;
        $order->buyerid = Auth::user()->id;
        $order->customeremail = Auth::user()->email;
        $order->customeraddress = ''; //$request->input('address');
        $order->total = number_format($product->price * $item->quantity, 2);
        $order->dateordered = $orderdate;
        $order->city = ''; //$request->input('city');
        $order->zipcode = ''; //$request->input('zipcode');
        $order->ordernumber = $ordernum;
        $order->total = $sum;
        $order->save();

        $orders = DB::table('orders')->where('buyerid', '=', auth()->user()->id)->get();
        $data['orders'] = $orders;

        return redirect("/userhome/{$data['user']->name}")->with('success', 'Your order has been sent. A confirmation will be sent to your email shortly.')->with(compact($data));

userhome.blade.php 代码在 '@if(count($data['orders']) > 0)' 行失败

<h1>{{ $data['user']->name }}</h1>

    <section class="topsellers">
        <h2>Orders</h2>
        <div class="container flex">

            @if (count($data['orders']) > 0)
                @foreach ($data['orders'] as $order)

                    <div class="productcard" }>
                        <p>test</p>

                    </div>

                @endforeach

            @else
                <p>Looks like you have no current orders.</p>

            @endif

        </div>
        {{-- {{$data['products']->links()}} --}}
    </section>

【问题讨论】:

    标签: php sql laravel


    【解决方案1】:

    使用您的控制器方法获取订单

    首先:更改您的redirect,如下所示:

    return redirect("/userhome/{$data['user']->name}")
    ->with('success', 'Your order has been sent. A confirmation will be sent to your email shortly.');
    

    第二:在控制器方法中从您的订单表中查询,然后像下面的代码一样传递给视图;

    public function someMethod()
    {
       $data['orders'] = DB::table('orders')->where('buyerid', '=', auth()->user()->id)->get();
       return view('userhome', $data);
    }
    

    【讨论】:

      猜你喜欢
      • 2013-01-27
      • 2014-04-15
      • 2014-04-30
      • 2014-07-06
      • 2015-01-11
      • 2016-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多