Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Проблема с пагинацией в админке


Recommended Posts

Добрый день, помогите решить проблему.

Opencart 2.1.0.2 (rs.1)
Делаю фильтр товаров по полю "Отсутствие на складе" для админки.
Фильтр вроде-бы заработал но с пагинацией проблема, при переходе на вторую страницу все сбрасывается.
в модели products получаю массив из таблицы stock_status :

public function getProductStockStatusNames(){
		$query = $this->db->query("SELECT * FROM oc_stock_status");
		return $query->rows;
}

Далее в контроллере передаю массив в вид:
 

$data['status_names_arr'] = $this->model_catalog_product->getProductStockStatusNames();

В виде формирую select с выбором параметра (не в наличии, доступно на складе и т.д), stock_status_id использую как значение опции:
 

              <div class="form-group">
                <label class="control-label" for="filter_stock_status_id">Статус товара</label>
                <select name="filter_stock_status_id" id="filter_stock_status_id" class="form-control" />
                    <option value="*"></option>
                    <?php for ($i = 0; $i < count($status_names_arr); $i++){
                        if ($status_names_arr[$i]['stock_status_id']==$filter_stock_status_id) { ?>
                            <option value="<?php echo($status_names_arr[$i]['stock_status_id']); ?>" selected="selected"><?php echo($status_names_arr[$i]['name']); ?>&nbsp;&nbsp;&nbsp;&nbsp;</option>
                        <?php } else { ?>
                            <option value="<?php echo($status_names_arr[$i]['stock_status_id']); ?>">&nbsp;&nbsp;<?php echo($status_names_arr[$i]['name']); ?>&nbsp;&nbsp;&nbsp;&nbsp;</option>
                        <?php }
                    } ?>
                </select>
            </div>

Ниже в скрипте добавляю:
 

  // 
  var filter_stock_status_id = $('select[name=\'filter_stock_status_id\']').val();

	if (filter_stock_status_id != '*') {
		url += '&filter_stock_status_id=' + encodeURIComponent(filter_stock_status_id);
	}
  // 

затем в контроллере в нескольких местах (смотрел как сделан фильтр по категориям который был скачан где-то на просторах интернета):
 

if (isset($this->request->get['filter_stock_status_id'])) {
	$url .= '&filter_stock_status_id=' . $this->request->get['filter_stock_status_id'];
}

и еще вот это :
 

if (isset($this->request->get['filter_stock_status_id'])) {
	$filter_stock_status_id = $this->request->get['filter_stock_status_id'];
} else {
	$filter_stock_status_id = null;
}

и потом снова в модели:
 

if (!empty($data['filter_stock_status_id'])) {
	$sql .= " AND p.stock_status_id LIKE '" . $this->db->escape($data['filter_stock_status_id']) . "%'";
}

В результате фильтр вроде-бы работает, но при переходе на вторую страницу получаю 0 товаров, и еще как бонус Undefined variable: status_names_arr.
Помогите плиз)

Надіслати
Поділитися на інших сайтах


при переходе на 2 страницу, в ссылку вставляет перед &page Ваш фильтр?

Проверьте, где Вы вставили в контроллере $url, там можно ошибиться. Проверьте, чтоб был в getList()

Надіслати
Поділитися на інших сайтах

10 минут назад, Leingard сказал:

при переходе на 2 страницу, в ссылку вставляет перед &page Ваш фильтр?

Проверьте, где Вы вставили в контроллере $url, там можно ошибиться. Проверьте, чтоб был в getList()

Да, урл формируется вроде-бы верно:
 

&filter_stock_status_id=5&page=2

$url вставил в getList , при чем в 3х местах, сам не понял зачем это, но там у всех остальных фильтров было также)

product.php

model_product.php

product_list.tpl

Змінено користувачем f4rr3ll1990
Надіслати
Поділитися на інших сайтах


1 минуту назад, f4rr3ll1990 сказал:

Да, урл формируется вроде-бы верно:
 


&filter_stock_status_id=5&page=2

$url вставил в getList , при чем в 3х местах, сам не понял зачем это, но там у всех остальных фильтров было также)

product.php

 

Первое для операциями с товарами, второе для сортировки, третье как раз для пагинации

Надіслати
Поділитися на інших сайтах

3 минуты назад, f4rr3ll1990 сказал:

Да, урл формируется вроде-бы верно:
 


&filter_stock_status_id=5&page=2

$url вставил в getList , при чем в 3х местах, сам не понял зачем это, но там у всех остальных фильтров было также)

product.php

 

выведите выше, что вообще приходит на 2 странице в $this->request->get['filter_stock_status_id']

Надіслати
Поділитися на інших сайтах

В каких местах добавили этот код?

if (!empty($data['filter_stock_status_id'])) {
	$sql .= " AND p.stock_status_id LIKE '" . $this->db->escape($data['filter_stock_status_id']) . "%'";
}

Должно быть для 2 методов

getTotalProducts и getProducts

 

Надіслати
Поділитися на інших сайтах


10 минут назад, Leingard сказал:

 

выведите выше, что вообще приходит на 2 странице в $this->request->get['filter_stock_status_id']

там лежит '5'
а вот  $status_names_arr в котором лежит массив из таблицы oc_stock_status отдает undefined когда я на второй странице

Надіслати
Поділитися на інших сайтах


6 минут назад, thentru сказал:

В каких местах добавили этот код?


if (!empty($data['filter_stock_status_id'])) {
	$sql .= " AND p.stock_status_id LIKE '" . $this->db->escape($data['filter_stock_status_id']) . "%'";
}

Должно быть для 2 методов

getTotalProducts и getProducts

 

getTotalProducts в модели проморгал
Спасибо всем огромное, все заработало)

Надіслати
Поділитися на інших сайтах


и правильно не так
 

$sql .= " AND p.stock_status_id LIKE '" . $this->db->escape($data['filter_stock_status_id']) . "%'";

а так
 

$sql .= " AND p.stock_status_id = '" . (int)$data['filter_stock_status_id'] . "'";

filter_stock_status_id - это целое число

Надіслати
Поділитися на інших сайтах


3 минуты назад, thentru сказал:

и правильно не так
 


$sql .= " AND p.stock_status_id LIKE '" . $this->db->escape($data['filter_stock_status_id']) . "%'";

а так
 


$sql .= " AND p.stock_status_id = '" . (int)$data['filter_stock_status_id'] . "'";

filter_stock_status_id - это целое число

Спасибо, сейчас поправлю) Я в пхп новичек)

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.