@Alexfixer

Как сделать пагинацию через ajax по продуктам в определённой категории?

Очень нужна помощь, сейчас у меня открываются категории продуктов через ajax и работает пагинация всех продуктов через ajax, как мне исправить код, чтобы при переходе в категорию работала пагинация по продуктам этой категории? Используя данный код, при открытии определённой категории товаров и нажатии на какую-нибудь страницу срабатывает пагинация ПО ВСЕМ продуктам, а не по продуктам открытой категории...Благодарю за любую помощь...
Контроллер продуктов:
public function index(Request $request)
{  
    $title_category = 'Продукты из всех категорий';
    $categories = Category::all();

    if (isset($request->cat) && ($request->cat > 0))
        $products = Product::with('category')->where("category_id", "=", "$request->cat")->orderBy('id', 'desc')->paginate(3);
    else
        $products = Product::orderBy('id', 'desc')->paginate(3);
    return view('index', compact('categories', 'products', 'title_category'));
}
public function ajax_pagination(Request $request)
{
 if($request->ajax())
     {  
        $title_category = 'ajax_pagination';
        $categories = Category::all();
        $products = Product::orderBy('id', 'desc')->paginate(3);
        return view('ajaxCatAndProd_data', compact('categories','products','title_category'))->render();
     }
}
public function ajax_category(Request $request) {
     if($request->ajax())
     {  
        $categories = Category::all();
        $products = Product::with('category')->where("category_id", "=", "$request->cat")->orderBy('id', 'desc')->paginate(3);
        switch ($request->cat) {
            case 1:
                $title_category = 'Аксессуары';
                break;
            case 2:
                $title_category = 'Портфолио';
                break;
            case 3:
                $title_category = 'Люди';
                break;
            case 4:
                $title_category = 'Спорт';
                break;
            case 5:
                $title_category = 'Бесплатные';
                break;
            case 6:
                $title_category = 'Природа';
                break;
            case 7:
                $title_category = 'Разное';
                break;
            default:
                $title_category = 'Все';
        }

        return view('ajaxCatAndProd_data', compact('products','categories', 'title_category'))->render();
        
     }
}
public function ajax_allcategory(Request $request) {
     if($request->ajax())
     {  
        $title_category = 'ajax_allcategory';
        $categories = Category::all();
        $products = Product::orderBy('id', 'desc')->paginate(3);
        return view('ajaxCatAndProd_data', compact('products','categories', 'title_category'))->render();
     }
}

View:
@foreach($categories as $category)
        <ul class="category">
            <li class="widjet-item">
                <a class="widget-cat widget-link" href="{{url("products")}}?cat={{$category->id}}">{{$category->title}}</a>
            </li>
        </ul>
        @endforeach
    </div>
</div>

<!-- right column products card -->
<div class="col-md-9">
    {{ $products->appends(request()->input())->links() }}
    <div class="row">
        @foreach($products as $product)
        <div class="col-md-4 col-sm-6 col-12 d-flex">
            <div class="product-card d-flex">
                <div class="prod_card__group">
                    <div class="prod-card__group-up">
                        <div class="gallerys">
                            <a href="{{ URL::to('/') }}/product_images/{{ $product->image }}"><img src="{{ URL::to('/') }}/product_images/{{ $product->image }}" alt="{{ $product->alt_attribute }}" class="img-fluid"/></a>
                        </div>
                        <div class="content-card">
                            <h3><a href="#" class="content-card_title">{{ $product->title }}</a></h3>
                            <p>Описание: {{ $product->preview_description }}</p>
                            <p>Цена: <strike>{{ $product->old_price }}</strike>|<strong>{{ $product->new_price }} руб.</strong></p>
                        </div>
                    </div>

main.js ajax скрипты
// Аякс скрипт пагинации
 $(document).on('click', '.pagination a', function(event){
  event.preventDefault(); 
  var page = $(this).attr('href').split('page=')[1];
  ajax_pagination(page);
 });

 function ajax_pagination(page)
 {
  $.ajax({
   url:"/ajax_pagination?page="+page,
   success:function(data)
   {
    $('#table_data').html(data);
   }
  });
 }

// Аякс скрипт для категорий
 $(document).on('click', '.category a', function(event){
  event.preventDefault(); 
  var cat = $(this).attr('href').split('cat=')[1];
  ajax_category(cat);
 });

 function ajax_category(cat)
 {
  $.ajax({
   url:"/ajax_category?cat="+cat,
   success:function(data)
   {
    $('#table_data').html(data);
   }
  });
 }
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 1
scottparker
@scottparker
так передай в запрос еще один параметр, с кодом, id или названием категории (хз по чем ты ее там определяешь) и используй этот параметр в выборке товаров
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
21 окт. 2020, в 14:06
1200 руб./в час
21 окт. 2020, в 13:59
1000 руб./в час
21 окт. 2020, в 13:40
35000 руб./за проект