Gloudemans 购物车内容在重定向到视图时为空,但使用 dd() 可见

Gloudemans Cart content is empty when redirected to a view but is visible with dd()

我想在将商品添加到购物车后重定向到索引视图。但是 Cart::content 似乎未设置。我可以 return 使用 dd();

的内容

这是视图中的表格:

{!! Form::open(['action' => ['CartController@add', $account->id], 'method' => 'POST']) !!}
{{ Form::hidden('product_id', $product->id) }}
{{ Form::hidden('product_name', $product->product_name) }}
{{ Form::hidden('price', $product->price) }}
  <tr>
    <td><a href="/inventory/view-product/{{ $product->id }}">{{ $product->id }}</a></td>
    <td><a href="/inventory/view-product/{{ $product->id }}">{{ ucwords($product->product_name) }}</a></td>
    <td><strong>{{ number_format($product->price, 2) }}</strong> per {{ ucwords($product->unit) }}</td>
    <td>{{ Form::number('qty', '1', ['style' => 'width:50px']) }}</td>
    <td>{{ Form::button('Add', ['type' => 'submit', 'name' => 'action', 'value' => 'add', 'class' => 'btn btn-primary']) }}</td>
  </tr>
{{ Form::hidden('_method', 'PUT') }}
{!! Form::close() !!}

控制器中的indexadd函数如下:

public function index($id)
{
    $account = Customer::find($id);
    $products = Product::all();
    $business_units = BusinessUnit::all();
    $cartItems = Cart::content();
    //dd($account);

    return view('cart.index')
         ->with('account', $account)
         ->with('products', $products)
         ->with('business_units', $business_units);
}

public function add(Request $request, $id)
{
    //dd($request);
    $product_id = $request->input('product_id');
    $product_name = $request->input('product_name');
    $price = $request->input('price');
    $qty = $request->input('qty');
    $url = $request->input('url');

    Cart::add($product_id, $product_name, $qty, $price);

    $cartItems = Cart::content();
    //dd($cartItems);
    return redirect()->back()->with('cartItems', $cartItems);
}

我想使用重定向,因为它必须使用搜索功能的参数返回到索引需求。

这就是我尝试访问购物车内容的方式:

@if(isset($cartItems))
    @foreach ($cartItems as $cartItem)
      <tr>
        <td class="center">1</td>
        <td class="left strong">Jasmine Rice</td>
        <td class="left">Long-grain variety of fragrant rice.</td>
        <td class="right">99.99</td>
        <td class="center"><input type="number" value="1" style="width:50px"></td>
        <td class="right">₱2,499.75</td>
      </tr>
    @endforeach
@else
    <tr>
      <td colspan="6" class="text-center">No item selected</td>
    </tr>
@endif

它会产生 "No item selected" 但我再次能够使用 dd();

查看内容

希望大家帮帮忙! laravel

我认为如果您在 index() 方法中将 cartItems 传递给您的视图,您应该能够看到购物车项目,因为应该从数据库中再次获取更新的数据(包括新创建的项目)。然后不需要将 cartItems 与重定向一起传递。我认为 with 方法在任何情况下调用 back() 方法后都不会执行任何操作。

所以尝试:

$cartItems = Cart::content();

return view('cart.index')
     ->with('account', $account)
     ->with('products', $products)
     ->with('cartItems', $cartItems)
     ->with('business_units', $business_units);