Содержимое корзины Gloudemans пусто при перенаправлении на просмотр, но отображается с помощью dd () - PullRequest
0 голосов
/ 11 марта 2019

Я хочу перенаправить в индексное представление после добавления товара в корзину.Но Cart :: content отображается не установленным.Я могу вернуть содержимое с помощью 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() !!}

Вот index и добавить функции в контроллере:

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

В результате появится сообщение «Нет выбранных элементов», но я снова смогу просмотреть содержимое с помощью dd () ;

Я надеюсь, что вы, ребята, можете помочь! Laravel

1 Ответ

0 голосов
/ 11 марта 2019

Я думаю, что если вы передадите cartItems своему представлению в методе index(), вы сможете увидеть элементы корзины, потому что обновленные данные должны быть снова получены из базы данных (включая вновь созданные элементы). Тогда не нужно будет передавать cartItems вместе с перенаправлением. Я не думаю, что метод with делает что-либо после вызова метода back() в любом случае.

Так что попробуйте:

$cartItems = Cart::content();

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