我花了几个小时在网上找到解决方案,但没有任何作用。
我有一个分为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;
但每当我点击提交按钮时都没有任何反应。我尝试将一个提交按钮添加到表单(而不是subForm)
使用setAction:
$baseForm->setAction($this->view->url(
array('controller' => 'Product', 'action' => 'add', 'id' => '1'), 'default',
true));
但它是一样的,最后我将表单分成两个不同的Zend_Form而不是子表单,但这不是很干净......
因此尝试过多页表单,子表单和dojo容器失败,我不知道该怎么做,欢迎任何帮助!
谢谢
答案 0 :(得分:1)
我不知道这是否会有所帮助,但这是我的答案。
如果MAIN表单未启用Dojo,您是否在init方法中调用了Zend_Dojo :: enableForm()? MAIN表格是否扩展了Zend_Dojo_Form?如果它从Zend_Dojo_Form扩展,那么你不必调用Zend_Dojo :: enableForm()。
Dojo表单通过使用javascript提交。你应该在客户端有一些javascript可以处理来自服务器的响应。如果您在客户端没有javascript来处理这些退货,那么您将不会“看到”提交的结果。
试试这个,使用dojo工具包编写一些javascript,当工程师从服务器接收内容时会创建一个警告框。这样,如果您单击提交按钮并出现一个警告框,您就会知道该表单已提交。