2011-07-04 34 views
0

我正在使用MVC模式爲Joomla CMS編寫自定義組件。我正在實現一個簡單的工作流程,我希望用戶在視圖中輸入一些數據,驗證此數據(在服務器端,這不是關於客戶端/ JavaScript驗證),並將用戶重定向到另一個視圖,如果驗證成功了。如果數據無效,則第一個視圖應該再次顯示,並標記無效字段。使用MVC模式驗證Joomla組件中的工作流程

現在我不確定在哪裏放置驗證代碼:我的第一個想法是將它放在控制器中,因爲這個必須決定是否重定向到第二個視圖。但是,我發現了幾個建議,告訴我而不是將驗證碼放在控制器中。

將它放到第一個視圖的模型中也是一個選項。但是,由於在Joomla中模型和視圖之間存在一對一的關係,我不確定是否可以創建模型類(因爲在成功驗證的情況下,第一個視圖不會再顯示)。

有沒有什麼標準的方法來做到這一點?或者這種行爲是在某個標準組件中實現的,所以我可以查找源代碼?任何想法(一些僞代碼會很好,足夠...)?

感謝您的幫助!

+0

我沒有與Joomla合作過!在大約2年之內,但因爲您將發送到不同的工作流程,所以我將使用控制器,該模型可能會在我已經使用的一些MVC模型中進行驗證時出現問題。如果用戶在同一工作流程中,那麼我將使用視圖進行驗證。 – Ryan

回答

2

在我的項目中,我將它們放在Form模型中(使用HTML_QuickForm2)。

半碼:

$form = new HTML_QuickForm2(); 
$form->addElement('text')->addRule('email'); 
if ($form->validate()) { 
    echo "all fine, storing in database"; 
} else { 
    //error, let's try it again 
    echo $form; 
} 

這樣一來,你在你的表單對象中的所有規則和驗證。將表單初始化代碼移動到擴展HTML_QuickForm2的自己的類中,然後進行設置。

+0

Thx爲提示。我不確定,如果HTML_QuickForm2與Joomla一起運行良好,但我會嘗試實現類似的東西。 – MartinStettner