Joomla обрабатывает несколько форм ajax на одной странице - PullRequest
0 голосов
/ 30 августа 2011

Я использую 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? Как бы вы поступили? (может быть есть другие способы создания такого компонента?)

(Я пробовал оба пути, и я не мог полностью заставить это работать, поэтому я решил спросить, не является ли это вопросом зачатия ...)

Спасибо, что нашли время, чтобы прочитать весь текст.

Ответы [ 2 ]

0 голосов
/ 16 сентября 2011

Я испробовал оба решения, и # 2 - единственное, что сработало для меня.

0 голосов
/ 30 августа 2011

Мой ответ таков: зачем даже обновлять детали, если это можно сделать без него?

Например, когда мы говорим об основных элементах формы, таких как текстовые поля и кнопки «check / radio», я бы предпочел следующее: при успешном сохранении / отправке просто отобразите красивое сообщение, например «Профиль сохранен», в течение нескольких секунд, и пользователь уверен, что изменения сохранены и озвучены.

Если я что-то пропустил, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...