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

Помогите дописать фильтр


Recommended Posts

Помогите дописать стандартный фильтр. 

 

В модели product.php есть 

function getProducts($data = array())

, сюда передается значение фильтра сортировок "от а до я" и количество страниц.

Мне нужно передать в эту функцию массив из клиента на сервер с кучей своих параметров,

 

к примеру 

http://localhost/......&attr=["attr_id":1,"text":"red"]

, обработать эти параметры и подставить их в запрос 

 

 

 

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


передать в эту функцию массив из клиента на сервер

 

Можно подробней ? Внешний сервер, внутренний ? какой тип передачи ? Созданны ли параметры приема\передачи в массиве фильтра ?

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

В общем, есть стандартный функционал фильтра в каталоге. http://min.us/lIxzxRe3POJf2

Я хочу добавить туда фильтр по характеристикам товара, которые формируются на основании заполненных у каждого товара этих характеристик. Вывести эти атрибуты проблем не составило.

В адресной строке формируется вот такая ссылка

http://localhost/index.php?route=product/category&path=20&sort=pd.name&order=ASC

к этой ссылке я хочу дописать свои критерии фильтрации, то есть GET параметр &attr=здесь я формирую JSON строку с набором нужных атрибутов

На стороне сервера в контроллере category.php получаю эту строку путем

$attr=$this->request->get['attr']
...
$data = array(
'filter_category_id' => $category_id, 
'sort'               => $sort,
'order'              => $order,
'start'              => ($page - 1) * $limit,
'limit'              => $limit,
'attr'               => $attr
);

В модели product.php в функции function getProducts($data = array()) пытаюсь превратить эту JSON строку в массив, для дальнейшей обработки, но при 

json_decode() строка становится пустой, count =0. Ну и на этом этапе я застрял. 

 

В качестве сервера используется обычный php+mysql хостинг.

И еще интересует как и в каком месте функции дописать sql запрос ...

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


Во первых, то что вы показали на картинке - это сортировка, во вторых, зачем JSON ? параметры нормально гет\пост гуляют, на крайний случай - аякс можно, но через JSON пропускать - смысла не вижу, ну и в 3-х, в контроллере какие данные прописаны, что б передавалось в модель ? Это же MVC...

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

Вы абсолютно правы, на скрине сортировка и вывод количества страниц. Разве при формировании запроса я не могу до order by вставить условие and, or  ?

В контроллере я получаю request и засовываю в переменную $data, которая потом обрабатывается в модели функцией getProducts. Сделал по аналогии с сортировкой, добавил такие же строки только со своими именами переменных. Если не трудно поясните мне, что здесь неправильно и почему это не вписывается в MVC. 

 

JSON формирую потому, что у меня одинаковые имена параметров attribute_id, text, category_id

"[{"attribute_id":4,"text":"8гб","category_id":20},{"attribute_id":4,"text":"16ГБ","category_id":20},{"attribute_id":2,"text":"1","category_id":20},{"attribute_id":2,"text":"4","category_id":20},{"attribute_id":3,"text":"333","category_id":20},{"attribute_id":3,"text":"7000","category_id":20}]"

думал что так проще будет.

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


Если вы идёте по пути сортировки, тогда попробуйте тогда рассмотреть аналогию, как добавляется сортировка по производителю.

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

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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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