/** * Renders the forms of a container. * * @param WizardContainer $container * @param string $layout * @param array $parameter * @return string */ public function render(WizardContainer $container, $layout = Form::LAYOUT_HORIZONTAL, $parameter = array()) { $content = ''; $content .= $container->renderPre($this->getView()); $tabsNav = ''; $tabsContent = ''; $containerParams = ['finish_label' => 'Finish', 'finish_href' => 'javascript:;', 'finish_enabled' => true]; if (isset($parameter['wizard'])) { $containerParams = array_merge($containerParams, $parameter['wizard']); unset($parameter['wizard']); } $translate = $this->getView()->plugin('translate'); $formContainer = $this->getView()->plugin('formcontainer'); if ($container instanceof ViewPartialProviderInterface) { return $this->getView()->partial($container->getViewPartial(), array('element' => $container)); } $containerId = $container->getAttribute('id'); if (!$containerId) { $containerId = 'wizardcontainer-' . strtolower(str_replace('\\', '-', get_class($container))); } foreach ($container as $tabElement) { $tabId = $containerId . '-' . strtolower($tabElement->getName()); $tabsNav .= '<li><a data-toggle="tab" href="#' . $tabId . '">' . $translate($tabElement->getLabel()) . '</a></li>'; $tabsContent .= '<div class="tab-pane" id="' . $tabId . '">' . $formContainer($tabElement, $layout, $parameter) . '</div>'; } $content .= '<div class="wizard-container" id="' . $containerId . '">' . '<ul>' . $tabsNav . '</ul>' . '<div class="tab-content">' . $tabsContent . '</div>' . '<ul class="pager wizard">' . '<li class="previous"><a href="javascript:;">← ' . $translate('previous') . '</a></li>' . '<li class="next"><a href="javascript:;">' . $translate('Next') . ' →</a></li>' . '<li class="finish' . ($containerParams['finish_enabled'] ? '' : ' disabled') . '">' . (false !== $containerParams['finish_label'] ? '<a class="pull-right" href="' . $containerParams['finish_href'] . '">' . $translate($containerParams['finish_label']) . ' •</a>' : '') . '</li></div>'; $content .= $container->renderPost($this->getView()); return $content; }