检查购物车的会话

时间:2017-01-06 11:11:11

标签: php laravel session laravel-5

我有一个关于show add to cart的特定问题。首先,我有这样的观点,以前的路线总是相同的,因为你首先选择菜单类别而不是去菜,所以我不能检查它。 我有两种不同的产品方式。第一个是单击导航栏中的“菜单”,而不是像菜单一样打开菜肴(没有添加到购物车的选项),第二个是在完成预订表格后选择产品并选择预订时需要的菜单。那么如果我直接从导航栏????(因为在两种情况下都是相同的视图),如何禁用添加到购物车选项? 这是我的控制者:

public function index($id)
{
    $menu_categories = Menu_Categories::where('visible','yes')->where('delete','no')->orderBy('position','ASC')->get();
    $selected_menu = $id;
    $dishes = Dishes::where('visible','yes')->where('delete','no')->where('id_menu_category',$id)->orderBy('name','DESC')->get();

    return view('dishes.dishes', ['dishes' => $dishes,'menu_categories' => $menu_categories,'selected_menu' => $selected_menu]);
}


/**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */
public function index_nav($id)
{
    $menu_categories = Menu_Categories::where('visible','yes')->where('delete','no')->orderBy('position','ASC')->get();
    $selected_menu = $id;
    $dishes = Dishes::where('visible','yes')->where('delete','no')->where('id_menu_category',$id)->orderBy('name','DESC')->get();
    session(['menu_nav' => true]);
    return view('dishes.dishes', ['dishes' => $dishes,'menu_categories' => $menu_categories,'selected_menu' => $selected_menu]);
}

这是我的观点:

 @foreach($dishes as $dish)
                    <!-- shop item -->
                        <div class="col-md-6 col-sm-6">
                            <div class="home-product text-center position-relative overflow-hidden margin-ten no-margin-top">
                                <a href=""><img height="300" style="height:250px;width: 100%" src="{{$dish->image}}" alt=""/></a>
                                <span class="product-name text-uppercase  black-text" ><a style="font-weight: bold; background-color: #FFFFFF;border: 1px solid white">{{$dish->name}}</a></span>
                                <span class="price black-text">{{$dish->price}} €</span>


                                <div class="quick-buy" style="width:100px;height:100px;margin-left:150px;">
                                    <div class="product-share">
                                        @if(Session::has('manu_nav') &&  Session::get('manu_nav') == true)

                                        @else
                                            <a href="{{url('add_item_to_cart',$dish->id)}}" class="highlight-button-dark btn btn-small no-margin-right quick-buy-btn"  title=""><i class="fa fa-shopping-cart"></i></a>
                                        @endif
                                    </div>
                                </div>

                            </div>
                        </div>
                        <!-- end shop item -->
                @endforeach

1 个答案:

答案 0 :(得分:0)

在您的方案中,从控制器设置会话有问题。它适用于当前场景,但会话必须删除。

否则,即使它们从菜单栏开始,会话也会在那里,因此,自刀片文件检查会话以来,此处也将禁用“添加到购物车”选项。一种解决方法是通过删除index方法中的会话来解决此问题。

然而,laravel有一个内置的解决方法,在会话中称为flash data

$request->session()->flash('menu_nav', 'true');

此会话仅用于第一个请求,并在重新加载页面时自动重置。因此,您可以使用index_nav方法触发Flash会话,并使用您的刀片进行检查,当用户转到下一页时,该刀片将自动取消设置。