Концептуальная помощь, необходимая для создания форм, связанных с родительским узлом
Я хотел бы узнать ваше мнение при создании решения для следующих требований приложения. Общая цель приложения - управлять учащимися, преподавателями и курсами так же, как программным обеспечением для школьного администрирования.
Некоторые типы контента будут иметь связанные формы (исходный формат - PDF), которые частично заполняются пользователем и частично приложением. После заполнения необходимых данных формы должны быть доступны для печати (PDF) и сохранено для последующего редактирования и повторной печати. Заполненная форма всегда должна оставаться связанной с определенным родительским узлом. Означает, что если пользователь просматривает или редактирует содержимое определенного узла, ему необходимо видеть связанные формы и иметь возможность нажимать на них, чтобы заполнять данные или редактировать или распечатывать заполненную форму снова и снова.
Небольшой пример.
Тип содержимого: студент (узел)
- related form: attendance
- related form: enrollment
Свойства связанных форм:
- original forms are available as PDF files
- some fields are filled in programmatically, taking data from the currently viewed student node
- other fields are filled in manually by the user
- filled in forms need to be printable (PDF) or send as mail attachment
- filled in forms need to be stored for future printing / editing
- forms always need to be related with their parent student node
Мое целевое решение заключается в следующем, используя как пример формы "посещаемость":
- программно создайте и подтвердите форму "посещаемость"
- сохраните заполненную форму в виде файла PDF в файловой системе
- добавьте PDF-файл в качестве вложения в соответствующий узел студента
- добавьте кнопку редактирования рядом с вложением, которая приведет пользователя к заполненной форме (для повторного редактирования и печати)
Может ли это решение сработать? У кого-нибудь есть идеи или подсказки для лучшего решения? Любые комментарии очень оцененный.
1 answers
Я бы решил это немного по-другому:
- Программно создайте и подтвердите форму "посещаемость" - звучит неплохо.
- Я бы создал отдельную таблицу базы данных и хранил там данные заполненной формы. Он должен иметь поля идентификатора узла (и пользователя), чтобы определить, к какому узлу (пользователю) он относится. Поле идентификатора узла или комбинация полей идентификатора узла и пользователя должны быть уникальными, чтобы вы всегда могли получить правильные данные о посещаемости для конкретного узла/пользователя. По желанию он может иметь уникальный, автоматически добавляемый идентификатор посещаемости в качестве первичного ключа, если в противном случае потребуется более одного поля (проще создавать уникальные пути для каждого посещения). Затем я бы также добавил либо отдельные поля для каждого поля формы, либо одно поле для всех данных (сериализованных) в зависимости от потребностей.
- Вместо этого добавьте ссылку на программно созданный путь (пример: посещаемость/1/pdf, где 1 будет уникальным идентификатором посещаемости). Когда пользователь переходит на страницу, создайте pdf-файл из посещаемости данные, которые они могут загружать/просматривать.
- Добавьте ссылку на страницу формы редактирования посещаемости (пример пути: посещаемость/1/редактировать).
Еще одна вещь, которую следует отметить, - это правильно получить разрешения (просмотр/редактирование), если есть необходимость в ограничениях.
В случае, если моя идея решения не слишком хорошо соответствует всем конкретным требованиям, я бы просто сказал, что вы должны хранить данные в базе данных, а не в файлах.