我有一个关于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
答案 0 :(得分:0)
在您的方案中,从控制器设置会话有问题。它适用于当前场景,但会话必须删除。
否则,即使它们从菜单栏开始,会话也会在那里,因此,自刀片文件检查会话以来,此处也将禁用“添加到购物车”选项。一种解决方法是通过删除index
方法中的会话来解决此问题。
然而,laravel有一个内置的解决方法,在会话中称为flash data。
$request->session()->flash('menu_nav', 'true');
此会话仅用于第一个请求,并在重新加载页面时自动重置。因此,您可以使用index_nav
方法触发Flash会话,并使用您的刀片进行检查,当用户转到下一页时,该刀片将自动取消设置。