2011-08-30 67 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

相關問題