2017-01-06 2 views
0

У меня есть конкретная проблема с отображением в корзину. Прежде всего, у меня есть вид таким образом, что предыдущий маршрут всегда один и тот же, потому что сначала выбираете категории меню, а затем выбираете блюда я не могу проверить это. У меня есть два разных способа выхода продуктов. Первый из них нажимает «Меню» в навигационных барах, а не открывает посуду как галерею (без опции добавления в корзину), второй - при выборе продуктов после заполнения формы бронирования и выбора меню, которое вы хотите забронировать , Так как я могу отключить добавление опции корзину, если я перейти непосредственно из навигационных баров ???? (потому что в обоих случаях одно и то же мнение) Это мой контроллер:Проверить сеансы для покупок

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

@FaisalMehmoodAwan hmmm это нормально сейчас? – User45648

ответ

0

В вашем сценарии проблема с установкой сеанса с вашего контроллера. Он будет работать для текущего сценария, но сеанс должен быть удален.

Else, даже если они идут из строки меню, сеанс будет там, и поэтому опция add to cart будет отключена здесь, так как файл клинка проверяет сеанс. Одним из способов устранения этой проблемы является удаление сеанса в вашем методе index.

Однако у laravel есть встроенное обходное решение для этого, называемое flash data в сеансе.

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

Этот сеанс будет доступен только для первого запроса и автоматически сбрасывается при перезагрузке страницы. Таким образом, вы можете инициировать флеш-сеанс в своем методе index_nav и проверять использование вашего лезвия, которое автоматически отключается при переходе пользователя на следующую страницу.

Смежные вопросы