/** * Outputs message depending on flag * * @param FormInterface $form * @param array $staticElements * @param null $formClass * * @return string */ public function __invoke(FormInterface $form, array $staticElements = [], $formClass = null) { $submitElements = []; /** @var Form $form */ $form->setAttribute('role', 'form'); if ($formClass == 'form-inline') { $form->setAttribute('class', $formClass . ' pull-right'); } elseif ($formClass) { $form->setAttribute('class', $formClass); } else { $formClass = $form->getAttribute('class'); } $form->prepare(); $output = $this->getView()->form()->openTag($form); foreach ($staticElements as $element) { $viewModel = new ViewModel(); $viewModel->setVariable('label', $element['label']); $viewModel->setVariable('value', $element['value']); $viewModel->setTemplate('travello-view-helper/widget/bootstrap-form-static'); $output .= $this->getView()->render($viewModel); } list($output, $submitElements) = $this->renderElements($form, $formClass, $output, $submitElements); if ($formClass == 'form-inline') { $template = 'bootstrap-form-submit-inline'; } else { $template = 'bootstrap-form-submit'; } $viewModel = new ViewModel(); $viewModel->setVariable('submitElements', $submitElements); $viewModel->setTemplate('travello-view-helper/widget/' . $template); $output .= $this->getView()->render($viewModel); $output .= $this->getView()->form()->closeTag(); return $output; }
public function prepareElement(FormInterface $form) { $form->setAttribute('class', ($this->isMultiple() ? 'multi' : 'single') . '-file-upload'); $form->setAttribute('data-is-empty', null === $this->getValue()); $this->form = $form; parent::prepareElement($form); }
/** * Render form with ajax submit * @see \Zend\Form\View\Helper\Form::render() * @param \Zend\Form\FormInterface $oForm * @param string $sFormLayout : default 'horizontal' * @return string */ public function renderForAjax(\Zend\Form\FormInterface $oForm, $sFormLayout = \TwbBundle\Form\View\Helper\TwbBundleForm::LAYOUT_HORIZONTAL, $bAjax = false) { $sAfter = ' if(document.id){ try{ '; if (!$oForm->getAttribute('action')) { $oForm->setAttribute('action', $this->getRequest()->getUri()->normalize()); } if (!$oForm->getAttribute('id')) { $oForm->setAttribute('id', $oForm->getName()); } if ($oForm->getAttribute('enctype') === 'multipart/form-data') { $sAfter .= ' var eForm = document.id(' . $this->getEscapeJsonHelper()->__invoke($oForm->getAttribute('id')) . '); eForm.iFrameFormRequest({ onRequest: function(){ if(eForm.validate())eForm.spin(); }, onComplete: function(sText){ var sJavascript = null; var sHtml = sText.stripScripts(function(sScript){ sJavascript = sScript; }); var aMatches = sHtml.match(/<body[^>]*>([\\s\\S]*?)<\\/body>/i); if(aMatches)sHtml = aMatches[1]; var eContainer = eForm.getParent().empty().set(\'html\',sHtml); if(sJavascript)Browser.exec(sJavascript); eForm.unspin(); window.behavior.apply(eContainer.getParent(),true); }, onFailure: function(){ alert(oController.translate(\'error_occurred\')); } }); '; } else { $sAfter .= ' var eForm = document.id(' . $this->getEscapeJsonHelper()->__invoke($oForm->getAttribute('id')) . '); eForm.get(\'validator\').addEvent(\'formValidate\',function(bIsValid){ if(bIsValid)new Form.Request(eForm,eForm.getParent()).send(); }); '; $oForm->setAttribute('onsubmit', 'return false;'); } $sAfter .= ' } catch(oException){ if(oController != null)alert(' . $this->getEscapeJsonHelper()->__invoke($this->getTranslator()->translate('error_occurred')) . '); } } '; return parent::render($oForm, $sFormLayout) . PHP_EOL . '<script type="text/javascript">' . $sAfter . '</script>'; }
/** * {@inheritDoc} */ public function openTag(FormInterface $form = null) { if ($form) { if (!$form->hasAttribute('role')) { $form->setAttribute('role', 'form'); } $class = $form->getAttribute('class'); if (strpos($class, 'form-horizontal') === false && strpos($class, 'form-inline') === false) { $form->setAttribute('class', trim("{$this->defaultClass} {$class}")); } } return parent::openTag($form); }
/** * Render a form from the provided $form, * * @param FormInterface $form * @param string $layout * @param array $parameter * @return string */ public function renderBare(FormInterface $form, $layout = self::LAYOUT_INLINE, $parameter = array()) { $renderer = $this->getView(); $headscript = $renderer->plugin('headscript'); $basepath = $renderer->plugin('basepath'); $headscript->appendFile($basepath('Core/js/core.spinnerbutton.js'))->appendFile($basepath('js/select2.min.js'))->appendFile($basepath('Core/js/core.forms.js')); $renderer->headLink()->appendStylesheet($basepath('css/select2.css'))->appendStylesheet($basepath('css/select2-bootstrap.css')); if ($scripts = $form->getOption('headscript')) { if (!is_array($scripts)) { $scripts = array($scripts); } foreach ($scripts as $script) { $headscript->appendFile($basepath($script)); } } $class = $form->getAttribute('class'); $class = preg_replace('~\\bform-[^ ]+\\b~', '', $class); $class .= ' ' . $layout; $form->setAttribute('class', $class); if (method_exists($form, 'prepare')) { $form->prepare(); } $formContent = ''; if ($form instanceof ViewPartialProviderInterface) { return $this->getView()->partial($form->getViewPartial(), array('element' => $form)); } foreach ($form as $element) { $parameterPartial = $parameter; if (!$element->hasAttribute('id')) { $elementId = preg_replace(array('~[^A-Za-z0-9_-]~', '~--+~', '~^-|-$~'), array('-', '-', ''), $form->getName() . '-' . $element->getName()); $element->setAttribute('id', $elementId); } if ($element instanceof ExplicitParameterProviderInterface) { $parameterPartial = array_merge($element->getParams(), $parameterPartial); } if ($element instanceof ViewPartialProviderInterface) { $parameterPartial = array_merge(array('element' => $element, 'layout' => $layout), $parameterPartial); $formContent .= $this->getView()->partial($element->getViewPartial(), $parameterPartial); } else { if ($element instanceof ViewHelperProviderInterface) { $helper = $element->getViewHelper(); if (is_string($helper)) { $helper = $this->getView()->plugin($helper); } $formContent .= $helper($element); } else { if ($element instanceof FieldsetInterface) { $formContent .= $this->getView()->formCollection($element, true, $layout); } else { $formContent .= $this->getView()->formRow($element, null, null, $layout); } } } } return $this->openTag($form) . $formContent . $this->closeTag(); }
/** * @param FormInterface|null $form */ private function setHorizontal($form) { if ($this->isHorizontal && $form !== null) { if ($form->hasAttribute('class')) { $form->setAttribute('class', 'form-horizontal ' . $form->getAttribute('class')); } else { $form->setAttribute('class', 'form-horizontal'); } } }
/** * Outputs message depending on flag * * @return string */ public function __invoke(FormInterface $form, $class = 'form-horizontal') { $submitElements = []; $form->setAttribute('class', $class . ' well'); $form->setAttribute('role', 'form'); $form->prepare(); $output = $this->getView()->form()->openTag($form); foreach ($form as $element) { if ($element instanceof Submit || $element instanceof Button) { $submitElements[] = $element; } elseif ($element instanceof Csrf || $element instanceof Hidden) { $output .= $this->getView()->formElement($element); } elseif ($element instanceof Collection) { $output .= $this->getView()->formCollection($element); } elseif ($element instanceof Checkbox) { // setup view model $viewModel = new ViewModel(); $viewModel->setVariable('element', $element); $viewModel->setTemplate('zf2rapid-library/widget/bootstrap-form-checkbox'); // render form element $output .= $this->getView()->render($viewModel); } else { $element->setAttributes(['class' => 'form-control']); $element->setLabelAttributes(['class' => 'col-sm-2 control-label']); // setup view model $viewModel = new ViewModel(); $viewModel->setVariable('element', $element); $viewModel->setTemplate('zf2rapid-library/widget/bootstrap-form-group'); // render form element $output .= $this->getView()->render($viewModel); } } // setup view model $viewModel = new ViewModel(); $viewModel->setVariable('submitElements', $submitElements); $viewModel->setTemplate('zf2rapid-library/widget/bootstrap-form-submit'); // render submit elements $output .= $this->getView()->render($viewModel); $output .= $this->getView()->form()->closeTag(); return $output; }
/** * Sets form layout class * * @param \Zend\Form\FormInterface $oForm * @param string $sFormLayout * @return void */ protected function setFormClass(\Zend\Form\FormInterface $oForm, $sFormLayout = self::LAYOUT_HORIZONTAL) { if (is_string($sFormLayout)) { $sLayoutClass = 'form-' . $sFormLayout; if ($sFormClass = $oForm->getAttribute('class')) { if (!preg_match('/(\\s|^)' . preg_quote($sLayoutClass, '/') . '(\\s|$)/', $sFormClass)) { $oForm->setAttribute('class', trim($sFormClass . ' ' . $sLayoutClass)); } } else { $oForm->setAttribute('class', $sLayoutClass); } } }
/** * Prepare the form element (mostly used for rendering purposes) * * @param FormInterface $form * @return mixed */ public function prepareElement(FormInterface $form) { // Ensure the form is using correct enctype $form->setAttribute('enctype', 'multipart/form-data'); }
/** * Generate an opening form tag * @param null|FormInterface $form * @param null|string $formType * @param array $displayOptions * @throws \DluTwBootstrap\Form\Exception\UnsupportedFormTypeException * @return string */ public function openTag(FormInterface $form = null, $formType = null, $displayOptions = array()) { $formType = $this->formUtil->filterFormType($formType); if (!array_key_exists($formType, $this->formTypeMap)) { throw new UnsupportedFormTypeException("Unsupported form type '{$formType}'."); } if ($form) { $class = $this->genUtil->addWords($this->formTypeMap[$formType], $form->getAttribute('class')); if (array_key_exists('class', $displayOptions)) { $class = $this->genUtil->addWords($displayOptions['class'], $class); } $escapeHtmlAttrHelper = $this->getEscapeHtmlAttrHelper(); $class = $this->genUtil->escapeWords($class, $escapeHtmlAttrHelper); $form->setAttribute('class', $class); } return parent::openTag($form); }
/** * Render a form from the provided $form, * * @param FormInterface $form * @param string $layout * @param array $parameter * @return string */ public function renderBare(FormInterface $form, $layout = self::LAYOUT_HORIZONTAL, $parameter = array()) { /* @var $renderer \Zend\View\Renderer\PhpRenderer * @var $headscript \Zend\View\Helper\HeadScript * @var $basepath \Zend\View\Helper\BasePath */ $renderer = $this->getView(); $headscript = $renderer->plugin('headscript'); $basepath = $renderer->plugin('basepath'); $headscript->appendFile($basepath('Core/js/core.spinnerbutton.js'))->appendFile($basepath('js/select2.min.js'))->appendFile($basepath('Core/js/core.forms.js')); /* @noinspection PhpParamsInspection */ $renderer->headLink()->appendStylesheet($basepath('css/select2.css')); if ($scripts = $form->getOption('headscript')) { if (!is_array($scripts)) { $scripts = array($scripts); } foreach ($scripts as $script) { $headscript->appendFile($basepath($script)); } } $class = $form->getAttribute('class'); $class = preg_replace('~\\bform-[^ ]+\\b~', '', $class); $class .= ' ' . $layout; $form->setAttribute('class', $class); $formId = $form->getAttribute('id') ?: $form->getName(); $form->setAttribute('id', preg_replace(array('~[^A-Za-z0-9_-]~', '~--+~', '~^-|-$~'), array('-', '-', ''), $formId)); if (method_exists($form, 'prepare')) { $form->prepare(); } $formContent = ''; if ($form instanceof ViewPartialProviderInterface) { return $renderer->partial($form->getViewPartial(), array('element' => $form)); } /* @var $element \Zend\Form\ElementInterface */ foreach ($form as $element) { $parameterPartial = $parameter; if (!$element->hasAttribute('id')) { $elementId = preg_replace(array('~[^A-Za-z0-9_-]~', '~--+~', '~^-|-$~'), array('-', '-', ''), $element->getName()); $element->setAttribute('id', $elementId); } if ($element instanceof ExplicitParameterProviderInterface) { /* @var $element ExplicitParameterProviderInterface */ $parameterPartial = array_merge($element->getParams(), $parameterPartial); } if ($element instanceof ViewPartialProviderInterface) { /* @var $element ViewPartialProviderInterface */ $parameterPartial = array_merge(array('element' => $element, 'layout' => $layout), $parameterPartial); /** @noinspection PhpToStringImplementationInspection */ $formContent .= $renderer->partial($element->getViewPartial(), $parameterPartial); } elseif ($element instanceof FieldsetInterface) { if ($element instanceof ViewHelperProviderInterface) { /* @var $element ViewHelperProviderInterface */ $helper = $element->getViewHelper(); if (is_string($helper)) { $helper = $renderer->plugin($helper); } $formContent .= $helper($element); } else { $formContent .= $renderer->formCollection($element, true, $layout); } } elseif (false !== $element->getOption('use_formrow_helper')) { $formContent .= $renderer->formRow($element, null, null, $layout); } else { $formContent .= $renderer->formElement($element); } } return $this->openTag($form) . $formContent . $this->closeTag(); }
protected function bindForm(FormInterface $form) { $form->setAttribute('type', 'create'); $id = $this->getIdentifier(); if ($id !== false) { $entity = $this->entityService->getEntityByIdentifier($id); if (!$entity) { //404 } $form->setAttribute('type', 'edit'); } else { $entityClass = $this->entityClass; $entity = new $entityClass(); } $form->bind($entity); return $form; }