/** {@inheritdoc} */ public function renderFieldset(\Zend\View\Renderer\PhpRenderer $view, \Zend\Form\Fieldset $fieldset) { $output = ''; if ($fieldset->has('Packages')) { $packages = $fieldset->get('Packages'); if ($packages->count()) { $formRow = $view->plugin('FormRow'); $translatorEnabled = $formRow->isTranslatorEnabled(); $formRow->setTranslatorEnabled(false); $output = "<div class='table'>\n"; foreach ($packages as $package) { $output .= $view->formRow($package, 'append') . "\n\n"; } $output .= "<span class='cell'></span>\n"; $output .= $view->formSubmit($fieldset->get('Submit')) . "\n"; $output .= "</div>\n"; $formRow->setTranslatorEnabled($translatorEnabled); } } return $output; }
/** * Render all elements from a fieldset * * This method iterates over all elements from the given fieldset and * renders them in a way appropriate for each element type. Subclasses with * more specialized rendering may extend or replace this method. * * @param \Zend\View\Renderer\PhpRenderer $view * @param \Zend\Form\Fieldset $fieldset * @return string HTML code */ public function renderFieldset(\Zend\View\Renderer\PhpRenderer $view, \Zend\Form\Fieldset $fieldset) { $output = '<div class="table">'; foreach ($fieldset as $element) { $row = ''; if ($element instanceof \Zend\Form\Element\Submit) { $row .= "<span class='cell'></span>\n"; $row .= $view->formSubmit($element); } elseif ($element instanceof \Zend\Form\Fieldset) { $row .= $view->htmlTag('span', $view->translate($element->getLabel()), array('class' => 'label'), true) . "\n"; $row .= $view->htmlTag('fieldset', "<legend></legend>\n" . $this->renderFieldset($view, $element)); } elseif (!$element instanceof \Zend\Form\Element\Csrf) { $row .= $view->formRow($element, 'prepend', false); if ((string) $element->getLabel() == '') { $row = "<div class='row'>\n<span class='label'></span>\n{$row}\n</div>"; } if ($element->getMessages()) { $row .= "\n<span class='cell'></span>\n"; $row .= $view->formElementErrors($element, array('class' => 'errors')); } if ($element->hasAttribute('id')) { // The FormRow helper renders the label differently: It // precedes the element instead of encapsulating it. // Add a div wrapper to achieve the same appearance. $row = "<div class='row'>\n{$row}\n</div>"; } } $output .= $row . "\n"; } $output .= "</div>\n"; return $output; }