Здравствуйте.
Нужно сделать сложную форму (много элементов, зависимость состояния одних от других, в том числе вложенная, загрузка файлов).
Подскажите каким образом лучше реализовать.
Для зависимостей элементов от других нашел хороший плагин. Теперь нужно подумать о загрузке файлов.
Файлов может быть много, при том что для разных пунктов формы могут загружаться разные файлы.
Любопытно согласование загрузки файлов и сохранения данных формы.
Просто при нажатии кнопки делать все по порядку - не вариант. Возникнет ошибка где-то - будет мусор и может что-то сломаться.
Думаю применить такой алгоритм.
При нажатии кнопки отправить сначала проверяется загружены ли все файлы на сервер без ошибок.
Подробнее про это. Получается, что сначала нужно загрузить файлы. Загружаются они в папку для временного хранения. Если загрузка успешна, то создаю скрытое поле формы с ID блока загрузки файла или просто присваиваю значение аттрибуту существующего скрытого поля. И когда нажимается кнопка отправить происходит проверка этого значения. Так выясняю загружены ли все файлы или нет.
Далее при нажатии кнопки отправить, если файлы во временной папке, то перемещаю их в папку постоянного хранения и удаляю из временной папки, сохраняю данные формы.
Если вдруг пользователь загрузил файлы в папку временного хранения и не закончил форму, ушел. Папка загрязняется, файлы занимают место. Как вариант при входе на страницу формы проверять содержимое папки и дату создания файла, если она, например, больше недели, то точно нужно удалить.
Работать эта схема будет. Но что если на каком-то этапе произойдет ошибка или как лучше быть с невостребованными файлами во временной папке. В Mysql есть транзакции. Было бы неплохо, если можно было бы реализовать что-то подобное для формы в общем.
Покритикуйте схему. Подскажите варианты. Может сталкивались.