Я использую Joomla для разработки компонента управления профилями пользователей с помощью AJAX.
Цель состоит в том, чтобы позволить пользователю редактировать свою собственную информацию о пользователе. Информации много, поэтому вместо одной массивной формы я решил создать «подформы» или разделы. И чтобы все было удобно, я хочу отправить формы и обновить информацию о пользователе с помощью AJAX.
Вот пример:
Есть два раздела: «Основная информация о пользователе», которая отображает имя, фамилию и возраст человека, и «Расширенная информация о пользователе», которая отображает профессию, компанию и навыки человека. Каждый раздел имеет ссылку (или кнопку) «изменить», которая превращает содержимое в форму (AJAX), позволяя пользователю изменять представленную информацию. Вы можете редактировать информацию только одного раздела за раз. Когда пользователь завершил изменение данных, он отправляет форму со ссылкой (или кнопкой) «отправить», и раздел возвращается к простому отображению информации раздела (с только что сделанными обновлениями).
Поэтому мне нужно знать, каков наиболее эффективный способ разработки такого компонента. Я думал о двух подходах:
1) В каталоге «tmpl» основного компонента просмотра мы видим следующие файлы:
default_basic.php
(отображает основную информацию о пользователе),
default_basic_edit.php
(отображает форму, которая позволяет пользователю редактировать основную информацию)
default_extended.php
(отображает расширенную информацию о пользователе),
default_extended_edit.php
(отображает форму, которая позволяет пользователю редактировать расширенную информацию)
default.php
(загружает каждый из подшаблонов дисплея с вызовами на JView::loadTemplate($subtemplate)
)
Когда пользователь нажимает на ссылку редактирования, AJAX-вызов вызывается по следующему URI index.php?option=com_userinfo&view=userinfo&subview=basic_edit&format=ajax
, в результате чего класс представления вызывает $this->loadTemplate('basic_edit')
после назначения ему информации о пользователе.
Если пользователь нажимает кнопку «Отмена», тот же процесс используется для повторной загрузки «базового» шаблона. И если пользователь изменяет информацию и щелкает ссылку отправки, форма отправляется, а затем загружается «базовый» шаблон.
2) В каталоге «tmpl» есть только файл «default.php», в котором хранится версия редактирования и версия дисплея каждого раздела. Но все редактируемые версии сначала скрыты. И когда пользователь нажимает на ссылку редактирования, отображаемая версия раздела становится скрытой, и отображается измененная версия (с использованием display: none и display: block). Затем, если пользователь нажимает кнопку отмены, мы делаем обратное. И если пользователь нажимает кнопку «Отправить», мы отправляем AJAX-запрос на обновление данных в базе данных и возвращаем обновленную информацию о пользователе, которая будет загружена в отображаемую версию раздела. И, наконец, мы заменим версию редактирования раздела его версией дисплея.
Я знаю, что текста много, но в итоге все сводится к выбору между обновлением полных блоков HTML с помощью AJAX или просто отправкой обновленной информации и изменением содержимого скрытых блоков, а затем их отображения. Итак, что, по вашему мнению, является наиболее логичным подходом, зная, что мы находимся в среде Joomla 1.5? Как бы вы поступили? (может быть есть другие способы создания такого компонента?)
(Я пробовал оба пути, и я не мог полностью заставить это работать, поэтому я решил спросить, не является ли это вопросом зачатия ...)
Спасибо, что нашли время, чтобы прочитать весь текст.