2017-06-06 24 views
0

我有一个fieldset与一些元素和一个按钮。当我提交表单时,我得到了一个空的按钮值。我如何告诉ZF2在返回数据中不包含按钮?如何在表单上调用getData时排除字段集中的元素?

//In fieldset 

//...other elements 

$this->add([ 
    'name' => 'add-question', 
    'type' => 'button', 
    'attributes' => [ 
     'onclick' => 'return add_question(this)', 
     'value' => 'Add Add-On', 
     'class' => 'add-element text-primary', 
    ], 
    'options' => [ 
     'label' => '', 
     'label_options' => [ 
      'disable_html_escape' => true, 
     ], 
    ], 
]); 

//In controller 
if($this->request->isPost()) { 
    $form->setData($this->request->getPost()); 
    if($form->isValid()) { 
     var_dump($form->getData()); 
     /* 
     array (size=12) 
      //... other elements 
      'add-ons' => array (size=2) 
       //... other elements 
       'add-question' => null 
     */ 

我知道从我可以添加验证组,但我不能在字段集中这样做。此外,表单只是一个空的表单,其中有一个提交按钮用于重用 - 所有表单元素都在字段集中。

+0

那么为什么你不应该在窗体上设置验证组的原因是什么?您不需要在表单类本身内设置验证组。在你的工厂里设置它,或者在你用fieldset配置表单之后呢?可能会帮助您显示更多的代码,例如基本表单的示例以及如何将字段集插入/添加到表单。 – Kwido

+0

表单类重用于许多形式。表单在控制器中实例化:'$ form = new \ Application \ Form \ Form();'根据需要添加字段集:'$ form-> add(new \ Application \ Form \ Part1Fieldset()); $ form-> add(new \ Application \ Form \ Part2Fieldset()); // etc'。这使我可以在其他“表单”的其他页面上重新使用字段集。 –

+0

也许增加一个例子,说明如何将它们构建到你的问题上,以便为他人清除它。但是在控制器中添加字段集后,您仍然可以使用与您设置元素相同结构的propper嵌套数组调用'$ form-> setValidationGroup($ validationGroup)'。 – Kwido

回答

0

我猜你的字段集扩展为\Zend\Form\Fieldset

如果是: 您无法在您的FieldValidationGroup中设置它们,因为它们现在是因为它们不是实现\Zend\Form\Form

只要\Zend\Form\Form延伸\Zend\Form\Fieldset,你应该像你使用扩展\Form,不破坏任何东西想为所有的形式能够使用setValidationGroup

相关问题