2011-08-30 72 views
0

我正在使用Joomla开发一个带有AJAX的用户配置文件管理组件。Joomla在同一页面上处理多个Ajax表格

目标是允许用户编辑他自己的用户信息。有很多信息,所以我决定制作“子表格”或部分。并且为了方便用户使用,我希望通过AJAX发送表单并刷新用户信息。

下面是一个例子:

有两个部分,“用户基本信息”,显示的第一个名字,姓氏和人的年龄和“扩展用户信息”,这显示了职业,公司和人的技能。每个部分都有一个“编辑”链接(或按钮),可将内容转换为允许用户修改呈现信息的表单(AJAX)。您一次只能编辑一个部分的信息。当用户完成修改数据时,他会发送带有“发送”链接(或按钮)的表单,并且该部分回到仅显示该部分的信息(包含刚创建的更新)。

所以我需要知道什么是开发这种组件最有效的方法。我想的两种方法:

1)在主组件视图我们以下的文件的“TMPL”目录:

  • default_basic.php(显示基本用户信息),
  • default_basic_edit.php(显示形式,其允许用户编辑基本信息)
  • default_extended.php(显示扩展的用户信息),
  • default_extended_edit.php(显示,其允许用户编辑前的形式倾向于信息),每个调用JView::loadTemplate($subtemplate))显示子模板的
  • default.php(负载

当编辑链接上的用户点击,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环境中?你将如何继续? (也许还有其他方法来创建这样的组件?)

(我想两者兼得,我不能完全使它的工作,所以我决定要问,看它是否是概念的问题...)

感谢您抽出时间来阅读所有文本。

回答

0

我已经尝试了两种解决方案,#2是唯一为我工作的人。

0

我的答案是:为什么即使刷新部分,当它可以做到没有它?

例如,当我们谈论像文本字段和检查/单选按钮这样的基本表单元素时,我更喜欢以下内容:在成功保存/发送时,只需显示诸如“配置文件已保存”之类的信息几秒钟,用户可以肯定的是,这些改变是保存和合理的。

如果我有些事情让我知道。

+0

我对问题的描述可能不清楚。事实上,当页面第一次加载时,它不显示表单元素,只显示HTML格式的用户信息。然后,当用户点击编辑按钮时,表格出现,允许他编辑他的信息。而当用户完成编辑时,我需要使表单消失以仅显示更新的信息。 – teum

+0

事实上,我只是试图重现像stackoverflow.com的“编辑注释”功能(有更多的信息来编辑)。显示您的评论。如果你想修改它,你点击编辑按钮,然后出现一个表单。您可以点击“取消”关闭表单,或者在完成编辑后点击“保存”。如果你点击“保存”,你的更新评论将被显示。 – teum

+0

大部分情况都可以在浏览器中使用JavaScript完成。例如,当您点击“编辑”(使用DOM操作)并简单复制要编辑的数据时,您可以动态创建文本字段。点击“保存”后,数据传输到服务器,显示成功消息,并将GUI恢复为不可编辑的视图(再次使用DOM操作)。这将最小化所涉及的负载。很确定这个表单在stackoverflow.com上就像那样;-) – hbit

相关问题