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
*/
我知道从我可以添加验证组,但我不能在字段集中这样做。此外,表单只是一个空的表单,其中有一个提交按钮用于重用 - 所有表单元素都在字段集中。
那么为什么你不应该在窗体上设置验证组的原因是什么?您不需要在表单类本身内设置验证组。在你的工厂里设置它,或者在你用fieldset配置表单之后呢?可能会帮助您显示更多的代码,例如基本表单的示例以及如何将字段集插入/添加到表单。 – Kwido
表单类重用于许多形式。表单在控制器中实例化:'$ form = new \ Application \ Form \ Form();'根据需要添加字段集:'$ form-> add(new \ Application \ Form \ Part1Fieldset()); $ form-> add(new \ Application \ Form \ Part2Fieldset()); // etc'。这使我可以在其他“表单”的其他页面上重新使用字段集。 –
也许增加一个例子,说明如何将它们构建到你的问题上,以便为他人清除它。但是在控制器中添加字段集后,您仍然可以使用与您设置元素相同结构的propper嵌套数组调用'$ form-> setValidationGroup($ validationGroup)'。 – Kwido