如何将值发送到会话? Laravel

时间:2016-06-03 17:43:21

标签: php laravel

我正在制作购物车。现在我可以将产品添加到会话中并在我的购物车中查看它们。这是我的CartController功能:

Add功能:

public function add(Request $request, $id)
{
    $request->session()->push('cart', $id);
    flash()->success('Prekė sėkmingai pridėtą į krepšelį.');
    return redirect('/prekes');
}

Show功能:

public function show()
{

    $products = session('cart');
    $products = Product::find($products);
    return view('cart.show', compact('products'));
}

这是Product页面:

    <div class="mainContainer">
        <h1>{{$product->title}} <i class="fa fa-shopping-cart" aria-hidden="true"></i></h1><br>
                <img style="height: 200px" src="{{$product->image}}"><br>
                <p>{!! $product->description !!}</p>
        <div class="bootstrap-wrapper">
            <a style="float: right; margin-top: -150px; margin-right: 300px; font-size: 24px"
               href="/prideti-i-krepseli/{{$product->id}}" class="btn btn-success">
                <i class="glyphicon glyphicon-shopping-cart"></i> Pridėti į krepšelį</a><br>
            {{number_format($product->price, 2, '.', ',')}} EUR
        </div>
    </div>

因此,如果我想从表单中发送一些值,我将如何在会话中插入它们?我应该在add函数中编写post方法代码吗?你能举个例子吗?我想制作一个表单,为每个项目设置一个数量。

1 个答案:

答案 0 :(得分:1)

据我所知,您希望将值数组添加到会话中(购物车可以表示为数组)。

要将值存储在数组中而不是单个会话变量,您需要更改

public function add(Request $request, $id)
{
    $request->session()->push('cart', $id);
    flash()->success('Prekė sėkmingai pridėtą į krepšelį.');
    return redirect('/prekes');
}

public function add(Request $request, $id, $quantity)
{
    $product_from_db = Product::find($id);
    $product = [];
    $product['id'] = $id;
    //you can add all data you need like this etc...
    $product['name'] = $product_from_db->name;
    $product['quantity'] = $quantity;        
    $request->session()->push('cart', array_merge((array)Session::get('cart',[]), $product));    
    flash()->success('Prekė sėkmingai pridėtą į krepšelį.');
    return redirect('/prekes');
}

从会话替换

接收数据
public function show()
{    
    $products = session('cart');
    $products = Product::find($products);
    return view('cart.show', compact('products'));
}

public function show()
{    
    $products = session('cart');
    return view('cart.show', compact('products'));
}

在您的视图中,您可以显示此类数据

@if(Session::has('cart'))
    @foreach(Session::get('cart') as $item)
        {{$item['id']}}
        {{$item['name']}}
        {{$item['quantity']}}
    @endforeach
@endif