我正在使用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環境中?你將如何繼續? (也許還有其他方法來創建這樣的組件?)
(我想兩者兼得,我不能完全使它的工作,所以我決定要問,看它是否是概念的問題...)
感謝您抽出時間來閱讀所有文本。
我對問題的描述可能不清楚。事實上,當頁面第一次加載時,它不顯示錶單元素,只顯示HTML格式的用戶信息。然後,當用戶點擊編輯按鈕時,表格出現,允許他編輯他的信息。而當用戶完成編輯時,我需要使表單消失以僅顯示更新的信息。 – teum
事實上,我只是試圖重現像stackoverflow.com的「編輯註釋」功能(有更多的信息來編輯)。顯示您的評論。如果你想修改它,你點擊編輯按鈕,然後出現一個表單。您可以點擊「取消」關閉表單,或者在完成編輯後點擊「保存」。如果你點擊「保存」,你的更新評論將被顯示。 – teum
大部分情況都可以在瀏覽器中使用JavaScript完成。例如,當您點擊「編輯」(使用DOM操作)並簡單複製要編輯的數據時,您可以動態創建文本字段。點擊「保存」後,數據傳輸到服務器,顯示成功消息,並將GUI恢復爲不可編輯的視圖(再次使用DOM操作)。這將最小化所涉及的負載。很確定這個表單在stackoverflow.com上就像那樣;-) – hbit