2011-09-08 62 views
0

我花了幾個小時在網上找到解決方案,但沒有任何工作。如何提交Zend Dojo子表單

我有一個表格分爲2子窗體(我不能讓手風琴窗格工作)

這樣的:

$sfBase = new Zend_Dojo_Form_SubForm('base_info'); 
$sfBase->setName('base_info') 
      ->setAction('/product/add?f=1'); 

$id = new Zend_Form_Element_Hidden('id'); 
$id->addFilter('Int') 
     ->setAttrib('style', 'display:none'); 

$nom = new Zend_Dojo_Form_Element_TextBox('name'); 
$nom->setLabel('Nom du produit') 
    ->setTrim(true) 
    ->setValue("Entrez le nom") 
    ->setPropercase(true); 

$sdesc = new Zend_Dojo_Form_Element_TextBox('sdesc'); 
$sdesc->setLabel('Courte description du produit') 
     ->setTrim(true) 
     ->setValue("Description") 
     ->setPropercase(true); 

$sfBase->addElements(array($id, $nom, $sdesc); 

$submitSubBase = new Zend_Dojo_Form_Element_SubmitButton('sub1'); 
$submitSubBase->setLabel('ok'); 
$sfBase->addElement($submitSubBase); 

幷包含另一個子窗體其他幾個要素:

$sfComp = new Zend_Dojo_Form_SubForm('comp_info'); 
$sfComp->setName('comp_info') 
     ->setAction('/product/add?f=2'); 
... 
$submitSubComp = new Zend_Dojo_Form_Element_SubmitButton('sub2'); 
$submitSubComp->setLabel('envoyer'); 
$sfComp->addElement($submitSubComp); 

$this->addSubForms(array('base_info' => $sfBase, 
      'comp_info' => $sfComp 
      )); 

在我的控制器中,我顯示了所有的實例:

$this->view->base = $form;

但是每當我點擊一個提交按鈕,什麼都不會發生。我試圖將添加到形式的單個提交按鈕(未子窗體)

用的setAction:

$baseForm->setAction($this->view->url(
      array('controller' => 'Product', 'action' => 'add', 'id' => '1'), 'default', 
      true)); 

,但它是相同的,最後我劃分的形式爲兩個不同的Zend_Form代替子表單但這不是很乾淨...

所以嘗試了多頁形式,subForms和dojo容器失敗我不知道該怎麼做,並且歡迎任何幫助!

謝謝

回答

1

我不知道這是否會有所幫助,但這裏是我的答案。

如果主表單不是啓用Dojo,你有沒有在init方法中調用Zend_Dojo :: enableForm()?主表單是否擴展Zend_Dojo_Form?如果它從Zend_Dojo_Form擴展,那麼你不必調用Zend_Dojo :: enableForm()。

Dojo表單通過使用javascript提交。你應該在客戶端有一些可以處理來自服務器的迴應的JavaScript。如果您在客戶端沒有處理這些回報的JavaScript,那麼您將不會'看到'提交結果。

試試這個,使用dojo工具包編寫一些javascript,當它從服務器接收到某些內容時會創建一個警告框。這樣,如果您點擊提交按鈕並出現警告框,您就會知道表單已提交。