Snnick
13.04.2017 - 17:32
Всем привет. Столкнулся с новой интересной задачей, реализовать фильтры в интернет магазине. В целом задача не сложная но хотелось бы все сделать правильно и с умом.
Есть некие требования:
1. Это данные по фильтрам должны подгружаться Ajax и вставляться в средний блок страницы, остальные блоки не перегружаются..
2. Должна ссылка GET генерироваться в зависимости от выбора фильтра и подставляться туда параметры без перезагрузки страницы. Чтоб потом можно было кому то эту ссылку скинуть с уже заполненными фильтрами.
Моя реализация:
1. При выборе фильтров пользователем стоит функция js на событие онклик или ончендж.
2. В функции считываю ссылку GET с параметрами.
3. При Выборе пользователем какого либо фильтра считываю значение параметра фильтра и подставляю в строку с GET с помощью history.pushstate. Само собой при выборе разных фильтров пользователем я постоянно перебираю строку GET в которую запихиваю или удаляю значения фильтров. Перебираю в цикле For в js с помощью регулярок.
4. Нужные параметры отдаю Ajax в контроллер, валидирую и с контроллера подгружаю все в центральний блок странички.
Вопрос на сколько эта логика хороша или возможны получше варианты?
Вы не ищите легких путей.
При выборе данных - делаешь serialize формы. Отправляешь на сервер.
На сервере подготавливаешь данные выборки и ссылку. Возвращаешь json клиенту. Выводишь данные, меняешь адресную строку.
Snnick
13.04.2017 - 18:24
Цитата (Kusss @ 13.04.2017 - 17:46) |
Вы не ищите легких путей.
При выборе данных - делаешь serialize формы. Отправляешь на сервер. На сервере подготавливаешь данные выборки и ссылку. Возвращаешь json клиенту. Выводишь данные, меняешь адресную строку. |
То есть при выборе каждого параметра мне отправлять на сервер данные и всю логику, которая сейчас делается в js сделать на сервере?
Ты ведь все равно выдаешь результат поиска. (я исклачаю условие, что у тебя выводиться ВСЕ, и открывается нужное). Добавить url в выдачу, не должно составить труда.
И логика у тебя уже должна быть, если поиск работал без аякса. Поменяешь на сервере - и нужно будет не забыть сделать на стороне клиента.
Snnick
14.04.2017 - 06:58
Цитата (Kusss @ 13.04.2017 - 21:22) |
Ты ведь все равно выдаешь результат поиска. (я исклачаю условие, что у тебя выводиться ВСЕ, и открывается нужное). Добавить url в выдачу, не должно составить труда. И логика у тебя уже должна быть, если поиск работал без аякса. Поменяешь на сервере - и нужно будет не забыть сделать на стороне клиента. |
Да, но в таком случае мне нужно делать второй Экшен, который будет отрабатывать для Ajax и возвращать json, верно? Потому как Экшен который у меня отрабатывает сейчас он подключает Вьюху страницы в целом.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.