【发布时间】:2011-08-30 08:34:59
【问题描述】:
我正在使用 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 请求来更新数据库中的数据并返回更新后的用户信息,这些信息将被加载到该部分的显示版本中。最后,我们将该部分的编辑版本替换为其显示版本。
我知道有很多文本,但最终它归结为在使用 AJAX 刷新完整的 HTML 块之间进行选择,或者只是发送更新的信息并修改隐藏块的内容然后让它们出现。那么,知道我们处于 Joomla 1.5 环境中,您认为最合乎逻辑的方法是什么?你将如何进行? (也许还有其他方法可以创建这样的组件?)
(我尝试了两种方法,但我无法完全使其工作,所以我决定询问是否是概念问题......)
感谢您花时间阅读所有文字。
【问题讨论】: