Хороший алгоритм для создания динамической формы регистрации?
В общем, суть такова: Есть проект на Yii с использованием Yii-booster.
Есть форма регистрации.
В процессе регистрации пользователь заводит магазин, а затем добавляет в него товары. Происходит это следующим образом:
1. Пустая страница с предложением добавить категорию.
2. Пользователь добавляет категорию, выбирает иконку из предложенных. В списке появляется новая категория (пустая) с полем для создания подкатегорий.
3. Пользователь вводит новую подкатегорию, она появляется внутри категории.
4. Внутри подкатегории пользователь добавляет товары (появляется popup с формой ввода данных о товаре)
И так продолжается, пока пользователь не введет данные о всех товарах. Разумеется, всё это дело происходит без обновления страницы, все данные уходят через AJAX.
Собственно, проблема в следующем: Поскольку данные до нажатия «ОК» могут редактироваться, удаляться и прочее, писать данные в БД сразу после получения AJAX-запроса, например, о создании новой категории как-то бессмысленно, лучше дождаться, пока пользователь введет все данные. Еще непонятно как отрисовывать все эти поля ввода динамически, потому что при добавлении новой категории внутри появляется поле ввода подкатегории, аналогично при добавлении подкатегории для каждой внутри отображается поле ввода для товара.
Собственно, примеры кода, конечно же, приветствуются, но в принципе, буду рад и просто хорошему подробному описанию.
Можно помечать записи статусом «Черновик». В этом случае даже если произойдет обрыв соединения, и пользователь перелогиниться, он сможет продолжить работать над своими документами. Но в тоже самое время, т.к. записи в состоянии черновика, они не отображаются остальным. Как только пользователь завершит ввод, статус обновится на другой, например «Ввод завершен». Таким же образом появляется возможность удалять документы (без физического удаления) и затем восстанавливать их в случае крайней необходимости.
Да, как вариант. Меня просто, честно говоря, смущают постоянные обращения к БД. Может лучше писать все данные в сессию, например, а по нажатию «ОК» уже писать в БД?
А если сессия отвалится по тайм-ауту или просто сам сервер вызовет ошибку и будет перезагружен. В этом случае пользователь потеряет свои документы. Это тоже не самый удобный вариант
Ну да, верно. Наверное да, это наилучший вариант. Осталось только разобраться как всё это отрисовывать и сопоставлять поле ввода подкатегории соответствующей категории и продукт — подкатегории
Сталкивался с подобной ситуацией. Сохраняйте данные в localStorage (все равно у вас все построение на JS) и потом, когда все параметры заданы постите на сервер. Так ничего не потеряется