2011-10-07 68 views
2

我正在越來越多的挖掘Zend_Framework,但是找到好的資源並不是那麼容易,因爲很多東西都來自舊版本。所以我希望能從這裏找到一些輸入。HowTo:Zend_Form通過ajax處理

我在尋找正確的方法來ajaxify我的Zend_Forms。有時我想通過ajax調用表單,然後通過ajax顯然處理它。調用ajax表單工作正常,但即時通訊處理有點掙扎。

目前我的行動看起來像這樣:

// asset/add 
public function addAction() { 
    $form = new Application_Form_Asset(); 
    if($this->getRequest()->isPost()) { 
    if($form->isValid($this->_getAllParams())) { 
     // Process to database using either Flashmessenger and redirector or view->message for success output 
    } 
    } 
    $this->view->form = $form; 
} 

現在我真的不通過,我需要在多大程度上改變這種代碼的理解。基本上我想達到什麼是:

  1. 呼叫通過AJAX的形式(即我能做的,ajaxContext和這樣的,沒問題)
  2. 過程通過AJAX的形式,太(工作也是如此,jQuery的,但處理結果是不是我想要的
  3. 結果應該是從存儲到數據庫

而且從點2-3的連接對象JSON是究竟在何處,我有我的問題,尋找資源在互聯網上。

猜想的解決方案:我的猜測是,我需要重新排列我的控制器和表單處理的方式,我不處理addAction()內的所有內容,但只有addActions任務才能顯示錶單並且只有這個和processaddAction() processadd執行驗證並插入數據庫。但即使使用這個模型,我也沒有真正看到我可以如何做json輸出。

我只是在我的想法中卡住了一點。我應該查找的一些「Zendwords」可能足以讓我找到我想要達到的目標,但如果有人想給我一個工作示例,我不會說不;)

在此先感謝!

回答

4

我不知道這究竟適合您的需求,但下面的教程是相當清楚的:

http://www.zendcasts.com/ajaxify-your-zend_form-validation-with-jquery/2010/04/

我使用的是思想包含有驗證通過Ajax的字段(如你比如說,使用不同的validateAction),都是交互式地(當他們在瀏覽器中失去焦點時)和提交之前。

希望有幫助,

+0

是的,這幾乎與我的猜測的解決方案齊頭並進。感謝您的鏈接,幾周前我已經觀看了它,並熟悉它。我不知道爲什麼,但我只是希望除了創建自己的行爲外,還有更多......「內置方法」來做這種事情。但我想這是它歸結爲:P – Sam

1

我通過在該按鈕上添加一個按鈕(而不是提交類型)和一個jquery點擊事件來做到這一點。 驗證是由驗證插件爲jquery服務的。

  1. Ajax調用將指向將處理數據的控制器/操作(processaddAction)。

  2. 然後得到的數據和json_encode它(返程$ JSON)

    公共職能processaddAction(){// 做等待處理 回報json_encode($的數據); }

  3. 你成功的Ajax功能將趕上JSON

    $。AJAX({ URL: 「/控制器/ processaddAction」, 類型: 'POST', 數據: '數據=' + [POST DATA], 異步:假, 成功:函數(theJson){

    } });

該表格僅由Zend-FW生成。