public function render(ElementInterface $element) { $eleWrapClass = ['col-sm-10']; $label = $element->getLabel(); $labelHtml = ''; if (!empty($label)) { // label $element->setLabelAttributes(['class' => 'col-sm-2 control-label']); $labelHelper = $this->getLabelHelper(); $labelHtml = $labelHelper($element); } else { $eleWrapClass[] = 'col-md-offset-2'; } // element $element->setAttribute('class', 'form-control'); $elementHelper = $this->getElementHelper(); $errorHtml = ''; $errorClass = ''; if (count($element->getMessages()) > 0) { $errorHelper = $this->getElementErrorsHelper(); $errorHtml = $errorHelper($element); $errorClass = 'has-error'; } $elementHtml = sprintf($this->eleWrap, implode(' ', $eleWrapClass), $elementHelper($element), $errorHtml); return sprintf($this->wrap, $errorClass, $labelHtml, $elementHtml); }
/** * Render a form <input> element from the provided $element * * @param ElementInterface $element * @param String $buttonContent * @throws Exception\DomainException * @return string */ public function render(ElementInterface $element, $buttonContent = null) { //$view = $this->getView(); //$view->headScript()->appendFile($view->basePath('/Core/js/bootstrap-switch.js')); if (null === $buttonContent) { $buttonContent = $element->getLabel(); if (null === $buttonContent) { throw new Exception\DomainException(sprintf('%s expects either button content as the second argument, ' . 'or that the element provided has a label value; neither found', __METHOD__)); } if (null !== ($translator = $this->getTranslator())) { $buttonContent = $translator->translate($buttonContent, $this->getTranslatorTextDomain()); } $element->setLabel(''); } //$escape = $this->getEscapeHtmlHelper(); //$translator = $this->getTranslator(); //$name = $element->getName(); $value = $element->getValue(); $checkedBoole = $value == 1 || $value == 'on'; //$checked = $checkedBoole?'checked="checked"':''; $checkedClass = $checkedBoole ? 'active"' : ''; $buttonContent = '<div class="btn-group" data-toggle="buttons">' . PHP_EOL . '<span class="btn btn-default ' . $checkedClass . '">' . PHP_EOL . parent::render($element) . $buttonContent . PHP_EOL . '</span>' . PHP_EOL . '</div>' . PHP_EOL; //$buttonContent = '<div><div class="processing yk-hidden"><span class="fa-spin yk-icon-spinner yk-icon"></span> ' . // $translator->translate('processing', $this->getTranslatorTextDomain()) . '</div><div class="default">' . $escape($buttonContent) . '</div></div>'; return $buttonContent; }
/** * Render a form <input> element from the provided $element * * @param ElementInterface $element * @throws Exception\InvalidArgumentException * @throws Exception\DomainException * @return string */ public function render(ElementInterface $element) { if (!$element instanceof CheckboxElement) { throw new Exception\InvalidArgumentException(sprintf('%s requires that the element is of type Zend\\Form\\Element\\Checkbox', __METHOD__)); } $name = $element->getName(); if (empty($name) && $name !== 0) { throw new Exception\DomainException(sprintf('%s requires that the element has an assigned name; none discovered', __METHOD__)); } $attributes = $element->getAttributes(); $attributes['name'] = $name; $attributes['type'] = $this->getInputType(); $attributes['value'] = $element->getCheckedValue(); $attributes['class'] = 'sr-only'; $closingBracket = $this->getInlineClosingBracket(); if ($element->isChecked()) { $attributes['checked'] = 'checked'; } $input = sprintf('<input %s%s', $this->createAttributesString($attributes), $closingBracket); $label = $element->getLabel(); $rendered = '<div class="checkbox"><label class="checkbox-custom" data-initialize="checkbox">' . $input . '<span class="checkbox-label">' . $label . '</span>' . '</label></div>'; if ($element->useHiddenElement()) { $hiddenAttributes = array('name' => $attributes['name'], 'value' => $element->getUncheckedValue()); $rendered = sprintf('<input type="hidden" %s%s', $this->createAttributesString($hiddenAttributes), $closingBracket) . $rendered; } return $rendered; }
/** * Renders a form element label from an element * @param \Zend\Form\ElementInterface $element * @param array|null $displayOptions * @return string * @throws \Zend\Form\Exception\DomainException */ public function render(ElementInterface $element, array $displayOptions = array()) { $labelContent = $element->getLabel(); if (empty($labelContent)) { throw new DomainException(sprintf('%s: No label set in the element.', __METHOD__)); } //Translate if (null !== ($translator = $this->getTranslator())) { $labelContent = $translator->translate($labelContent, $this->getTranslatorTextDomain()); } //Escape $escaperHtml = $this->getEscapeHtmlHelper(); $labelContent = $escaperHtml($labelContent); //Label attributes $labelAttributes = $element->getLabelAttributes(); if (empty($labelAttributes)) { $labelAttributes = array(); } $labelAttributes = $this->genUtil->addWordsToArrayItem('control-label', $labelAttributes, 'class'); if (array_key_exists('required', $displayOptions) && $displayOptions['required']) { $labelAttributes = $this->genUtil->addWordsToArrayItem('required', $labelAttributes, 'class'); } if (!array_key_exists('id', $labelAttributes)) { $labelAttributes['id'] = 'label-' . $element->getName(); } $element->setLabelAttributes($labelAttributes); $formLabelHelper = $this->formLabelHelper; return $formLabelHelper($element, $labelContent); }
public function render(ElementInterface $element) { $req = ''; if ($element->getOption('required')) { $req = 'required'; } return sprintf('<tr><td>%s</td><td>%s</td> </tr>', $element->getLabel(), parent::render($element)); }
/** * Utility form helper that renders a label (if it exists), an element and errors * * @param ElementInterface $element * @return string * @throws \Zend\Form\Exception\DomainException */ public function render(ElementInterface $element) { $escapeHtmlHelper = $this->getEscapeHtmlHelper(); $labelHelper = $this->getLabelHelper(); $elementHelper = $this->getElementHelper(); $elementErrorsHelper = $this->getElementErrorsHelper(); $label = $element->getLabel(); $inputErrorClass = $this->getInputErrorClass(); $elementErrors = $elementErrorsHelper->render($element); // Does this element have errors ? if (!empty($elementErrors) && !empty($inputErrorClass)) { $classAttributes = $element->hasAttribute('class') ? $element->getAttribute('class') . ' ' : ''; $classAttributes = $classAttributes . $inputErrorClass; $element->setAttribute('class', $classAttributes); } $elementString = $elementHelper->render($element); if (!empty($label)) { $label = $escapeHtmlHelper($label); $labelAttributes = $element->getLabelAttributes(); if (empty($labelAttributes)) { $labelAttributes = $this->labelAttributes; } // Multicheckbox elements have to be handled differently as the HTML standard does not allow nested // labels. The semantic way is to group them inside a fieldset $type = $element->getAttribute('type'); if ($type === 'multi_checkbox' || $type === 'radio') { $markup = sprintf('<fieldset><legend>%s</legend>%s</fieldset>', $label, $elementString); } else { if ($element->hasAttribute('id')) { $labelOpen = $labelHelper($element); $labelClose = ''; $label = ''; } else { $labelOpen = $labelHelper->openTag($labelAttributes); $labelClose = $labelHelper->closeTag(); } switch ($this->labelPosition) { case self::LABEL_PREPEND: $markup = $labelOpen . '<span>' . $label . '</span>' . $elementString . $labelClose; break; case self::LABEL_APPEND: default: $markup = $labelOpen . $elementString . '<span>' . $label . '</span>' . $labelClose; break; } if ($this->renderErrors) { $markup .= $elementErrors; } } } else { if ($this->renderErrors) { $markup = $elementString . $elementErrors; } else { $markup = $elementString; } } return $markup; }
/** * @param ElementInterface $element * * @return string */ protected function renderLabel(ElementInterface $element) { $labelPlugin = $this->getView()->plugin('sxb_form_control_label'); $label = $element->getLabel(); if (null !== $label) { $label = $labelPlugin($label, $element->getName(), $element->getLabelAttributes()); } return $label; }
/** * @param ElementInterface $oElement * @return string */ public function getLabelContent(ElementInterface $oElement) { $sLabelContent = $oElement->getLabel() ?: ''; if ($sLabelContent) { if ($oTranslator = $this->getTranslator()) { $sLabelContent = $oTranslator->translate($sLabelContent, $this->getTranslatorTextDomain()); } } return $sLabelContent; }
public function render(ElementInterface $element, $labelPosition = null) { $result = '<div class="zui-field-group">'; if ($element->getLabel()) { $result .= $this->getView()->formLabel($element); } $result .= $this->getView()->formElement($element); $result .= $this->getView()->zourceFormDescription($element); $result .= $this->getView()->formElementErrors($element); $result .= '</div>'; return $result; }
public function __invoke(ElementInterface $element = null, $labelContent = null, $position = null) { $labelContent = $element->getLabel(); // Implement all default lines of Zend\Form\View\Helper\FormLabel // Set $required to a default of true | existing elements required-value $required = $element->hasAttribute('required') ? $element->getAttribute('required') : true; if (true === $required && ($labelContent != '' || $labelContent != null || $labelContent != false)) { $labelContent = sprintf('<div class="col-lg-10"><span class="im-required">(*)</span> %s</div>', $labelContent); } elseif (false === $required && ($labelContent != '' || $labelContent != null || $labelContent != false)) { $labelContent = $labelContent; } return $labelContent; }
/** * Utility form helper that renders a label (if it exists), an element and errors * * @param ElementInterface $element * @throws \Zend\Form\Exception\DomainException * @return string */ public function render(ElementInterface $element, $labelPosition = null) { $escapeHtmlHelper = $this->getEscapeHtmlHelper(); $elementHelper = $this->getElementHelper(); $elementErrorsHelper = $this->getElementErrorsHelper(); $label = $element->getLabel(); $inputErrorClass = $this->getInputErrorClass(); if (isset($label) && '' !== $label) { // Translate the label if (null !== ($translator = $this->getTranslator())) { $label = $translator->translate($label, $this->getTranslatorTextDomain()); } } // Does this element have errors ? if (count($element->getMessages()) > 0 && !empty($inputErrorClass)) { $classAttributes = $element->hasAttribute('class') ? $element->getAttribute('class') . ' ' : ''; $classAttributes = $classAttributes . $inputErrorClass; $element->setAttribute('class', $classAttributes); } if ($this->partial) { $vars = array('element' => $element, 'label' => $label, 'labelAttributes' => $this->labelAttributes, 'labelPosition' => $this->labelPosition, 'renderErrors' => $this->renderErrors); return $this->view->render($this->partial, $vars); } $rowOpen = '<div class="form-group">'; $rowClose = '</div>'; $elementString = $elementHelper->render($element); if ($elementErrorsHelper->render($element)) { $rowOpen = '<div class="form-group has-error">'; $elementErrors = $elementErrorsHelper->setMessageOpenFormat('<p class="text-danger">')->setMessageSeparatorString('<br />')->setMessageCloseString('</p>')->render($element); $elementString .= $elementErrors; } // hidden elements do not need a <label> -https://github.com/zendframework/zf2/issues/5607 $type = $element->getAttribute('type'); if (isset($label) && '' !== $label && $type !== 'hidden') { if (!$element instanceof LabelAwareInterface || !$element->getLabelOption('disable_html_escape')) { $label = $escapeHtmlHelper($label); } if ($label !== '' && !$element->hasAttribute('id') || $element instanceof LabelAwareInterface && $element->getLabelOption('always_wrap')) { $label = '<label class="col-sm-3 control-label">' . $label . '</label>'; } $elementString = '<div class="col-sm-9">' . $elementString . '</div>'; // Button element is a special case, because label is always rendered inside it if ($element instanceof Button || $element instanceof Checkbox || $element instanceof Radio) { $label = '<div class="col-sm-3"></div>'; } $markup = $label . $elementString; } else { $markup = $elementString; } return $rowOpen . $markup . $rowClose; }
public function render(ElementInterface $element) { $escapeHtmlHelper = $this->getEscapeHtmlHelper(); $labelHelper = $this->getLabelHelper(); $elementHelper = $this->getElementHelper(); $elementErrorsHelper = $this->getElementErrorsHelper(); $label = $element->getLabel(); $inputErrorClass = $this->getInputErrorClass(); $elementErrors = $elementErrorsHelper->render($element); // Does this element have errors ? if (!empty($elementErrors) && !empty($inputErrorClass)) { $classAttributes = $element->hasAttribute('class') ? $element->getAttribute('class') . ' ' : ''; $classAttributes = $classAttributes . $inputErrorClass; $element->setAttribute('class', $classAttributes); } if (!$element->hasAttribute('id')) { $inputId = 'input' . ucfirst($element->getAttribute('name')); $element->setAttribute('id', $inputId); } else { $inputId = $element->getAttribute('id'); } $markup = <<<EOD <div class="control-group%extraClass"> <label for="{$inputId}" class="control-label">%label:</label> <div class="controls"> %input %help </div> </div> EOD; $elementString = $elementHelper->render($element); if (null !== ($translator = $this->getTranslator())) { $label = $translator->translate($label, $this->getTranslatorTextDomain()); } $label = $escapeHtmlHelper($label); if (!$this->renderErrors) { $elementErrors = ''; $markup = str_replace('%extraClass', '', $markup); } $markup = str_replace('%label', $label, $markup); $markup = str_replace('%input', $elementString, $markup); if ($elementErrors) { $elementErrors = '<span class="help-inline">' . $elementErrors . '</span>'; $markup = str_replace('%extraClass', ' error', $markup); } else { $markup = str_replace('%extraClass', '', $markup); } $markup = str_replace('%help', $elementErrors, $markup); return $markup; }
public function render(ElementInterface $element) { $name = $element->getName(); if (empty($name) && $name !== 0) { throw new Exception\DomainException(sprintf('%s requires that the element has an assigned name; none discovered', __METHOD__)); } $label = $element->getLabel(); $attributes = $element->getAttributes(); $attributes['name'] = $name; $attributes['type'] = $this->getInputType(); $attributes['class'] = 'sr-only'; $attributes['value'] = $element->getValue(); $closingBracket = $this->getInlineClosingBracket(); $input = sprintf('<input %s%s', $this->createAttributesString($attributes), $closingBracket); $rendered = '<div class="radio"><label class="radio-custom" data-initialize="radio">' . $input . '</label>' . $label . '</div>'; return $rendered; }
/** * {@inheritDoc} * * @param ElementInterface $element */ public function render($content, array $attribs = [], ElementInterface $element = null) { if ($content instanceof LabelAwareInterface) { $content = $content->getLabel(); } elseif ($element instanceof LabelAwareInterface) { $content = $element->getLabel(); } if (is_string($content) && $this->hasTranslator() && $this->isTranslatorEnabled()) { $content = $this->getTranslator()->translate($content, $this->getTranslatorTextDomain()); } if ($element instanceof FormInterface && ($object = $element->getObject()) && method_exists($object, '__toString')) { $content = sprintf($content, $object); } if ($element && (!$element instanceof LabelAwareInterface || !$element->getLabelOption('disable_html_escape'))) { $escapeHtmlHelper = $this->getEscapeHtmlHelper(); $content = $escapeHtmlHelper($content); } return parent::render($content, $attribs); }
/** * Utility form helper that renders a label (if it exists), an element and errors * * @param ElementInterface $element * @return string * @throws \Zend\Form\Exception\DomainException */ public function render(ElementInterface $element) { $escapeHtmlHelper = $this->getEscapeHtmlHelper(); $labelHelper = $this->getLabelHelper(); $elementHelper = $this->getElementHelper(); $elementErrorsHelper = $this->getElementErrorsHelper(); $label = $element->getLabel(); $inputErrorClass = $this->getInputErrorClass(); $elementErrors = $elementErrorsHelper->render($element); // Does this element have errors ? if (!empty($elementErrors) && !empty($inputErrorClass)) { $classAttributes = $element->hasAttribute('class') ? $element->getAttribute('class') . ' ' : ''; $classAttributes = $classAttributes . $inputErrorClass; $element->setAttribute('class', $classAttributes); } $elementString = $elementHelper->render($element); $markup = $this->openTag($element); if (!empty($label)) { $label = $escapeHtmlHelper($label); $labelAttributes = $element->getLabelAttributes(); $labelAttributes = is_null($labelAttributes) ? array() : $labelAttributes; if (array_key_exists('class', $labelAttributes) && !empty($labelAttributes['class'])) { $labelAttributes['class'] .= ' '; } $labelAttributes['class'] = 'control-label'; $labelOpen = $labelHelper->openTag($labelAttributes); $labelClose = $labelHelper->closeTag(); $markup .= $labelOpen . $label . $labelClose . '<div class="controls">' . $elementString; if ($this->renderErrors) { $markup .= $elementErrors; } $markup .= '</div>'; } else { if ($this->renderErrors) { $markup .= $elementString . $elementErrors; } else { $markup .= $elementString; } } $markup .= $this->closeTag(); return $markup; }
/** * Render a collection by iterating through all fieldsets and elements * * @param ElementInterface $element * @return string */ public function render(ElementInterface $element) { $renderer = $this->getView(); if (!method_exists($renderer, 'plugin')) { // Bail early if renderer is not pluggable return ''; } $markup = ''; $templateMarkup = ''; $escapeHtmlHelper = $this->getEscapeHtmlHelper(); $rowHelper = $this->getRowHelper(); if ($element instanceof CollectionElement && $element->shouldCreateTemplate()) { $elementOrFieldset = $element->getTemplateElement(); if ($elementOrFieldset instanceof FieldsetInterface) { $templateMarkup .= $this->render($elementOrFieldset); } elseif ($elementOrFieldset instanceof ElementInterface) { $templateMarkup .= $rowHelper($elementOrFieldset); } } foreach ($element->getIterator() as $elementOrFieldset) { if ($elementOrFieldset instanceof FieldsetInterface) { $markup .= $this->render($elementOrFieldset); } elseif ($elementOrFieldset instanceof ElementInterface) { $markup .= $rowHelper($elementOrFieldset); } } // If $templateMarkup is not empty, use it for simplify adding new element in JavaScript if (!empty($templateMarkup)) { $escapeHtmlAttribHelper = $this->getEscapeHtmlAttrHelper(); $markup .= sprintf('<span data-template="%s"></span>', $escapeHtmlAttribHelper($templateMarkup)); } // Every collection is wrapped by a fieldset if needed if ($this->shouldWrap) { $label = $element->getLabel(); if (!empty($label)) { $label = $escapeHtmlHelper($label); $markup = sprintf('<fieldset><legend>%s</legend>%s</fieldset>', $label, $markup); } } return $markup; }
/** * @see \Zend\Form\View\Helper\FormCheckbox::render() * @param \Zend\Form\ElementInterface $oElement * @throws \LogicException * @throws \InvalidArgumentException * @return string */ public function render(\Zend\Form\ElementInterface $oElement) { if (!$oElement instanceof \Zend\Form\Element\Checkbox) { throw new \InvalidArgumentException(sprintf('%s requires that the element is of type Zend\\Form\\Element\\Checkbox', __METHOD__)); } if (($sName = $oElement->getName()) !== 0 && empty($sName)) { throw new \LogicException(sprintf('%s requires that the element has an assigned name; none discovered', __METHOD__)); } $aAttributes = $oElement->getAttributes(); $aAttributes['name'] = $sName; $aAttributes['type'] = $this->getInputType(); $aAttributes['value'] = $oElement->getCheckedValue(); $sClosingBracket = $this->getInlineClosingBracket(); if ($oElement->isChecked()) { $aAttributes['checked'] = 'checked'; } //Render label $sLabelOpen = $sLabelClose = $sLabelContent = ''; //Render label and visible element if ($sLabelContent = $oElement->getLabel()) { if ($oTranslator = $this->getTranslator()) { $sLabelContent = $oTranslator->translate($sLabelContent, $this->getTranslatorTextDomain()); } $oLabelHelper = $this->getLabelHelper(); $sLabelOpen = $oLabelHelper->openTag($oElement->getLabelAttributes() ?: null); $sLabelClose = $oLabelHelper->closeTag(); } //Render checkbox $sElementContent = sprintf('<input %s%s', $this->createAttributesString($aAttributes), $sClosingBracket); //Add label markup if ($this->getLabelPosition($oElement) === \Zend\Form\View\Helper\FormRow::LABEL_PREPEND) { $sElementContent = $sLabelOpen . ($sLabelContent ? rtrim($sLabelContent) . ' ' : '') . $sElementContent . $sLabelClose; } else { $sElementContent = $sLabelOpen . $sElementContent . ($sLabelContent ? ' ' . ltrim($sLabelContent) : '') . $sLabelClose; } //Render hidden input if ($oElement->useHiddenElement()) { $sElementContent = sprintf('<input type="hidden" %s%s', $this->createAttributesString(array('name' => $aAttributes['name'], 'value' => $oElement->getUncheckedValue())), $sClosingBracket) . $sElementContent; } return $sElementContent; }
/** * render * * Return the HTML representation of the form element's label. * * @param ElementInterface $element The form element which label should be rendered. * @param array $options Optional view helper options. * * @return string */ public function render(ElementInterface $element, array $options = []) { if (!empty($options)) { $this->setOptions($options); } $name = $element->getName(); $label = $element->getLabel(); if (empty($label) && false == $this->getOption('allow_empty_label', false)) { return ''; } // Merge the label attributes $attributes = $this->getAttributes(); if ($element instanceof LabelAwareInterface) { $attributes = array_merge($attributes, $element->getLabelAttributes()); } if (!empty($name) && !isset($attributes['for'])) { $attributes['for'] = $name; } $this->setAttributes(array_unique($attributes)); return parent::render($label); }
/** * {@inheritDoc} */ public function render($content, array $attribs = [], ElementInterface $element = null) { if ($element) { $srOnly = $this->getSrOnly(); if (null === $srOnly) { if ($element instanceof LabelAwareInterface) { if (!$element->getLabel()) { return ''; } $srOnly = $element->getLabelOption('sr_only'); } if (null === $srOnly && $element->hasAttribute('placeholder')) { $srOnly = true; } } if ($srOnly) { $attribs = array_merge_recursive($attribs, ['class' => 'sr-only']); } } return parent::render($content, $attribs, $element); }
/** * Utility form helper that renders a label (if it exists), an element and errors * * @param ElementInterface $element * @return string * @throws \Zend\Form\Exception\DomainException */ public function render(ElementInterface $element) { $escapeHtmlHelper = $this->getEscapeHtmlHelper(); $labelHelper = $this->getLabelHelper(); $elementHelper = $this->getElementHelper(); $elementErrorsHelper = $this->getElementErrorsHelper(); $label = $element->getLabel(); $elementString = $elementHelper->render($element); $elementErrors = $elementErrorsHelper->render($element); if (!empty($label)) { $label = $escapeHtmlHelper($label); $labelAttributes = $element->getLabelAttributes(); if (empty($labelAttributes)) { $labelAttributes = $this->labelAttributes; } // Multicheckbox elements have to be handled differently as the HTML standard does not allow nested // labels. The semantic way is to group them inside a fieldset $type = $element->getAttribute('type'); if ($type === 'multi_checkbox' || $type === 'multicheckbox' || $type === 'radio') { $markup = sprintf('<fieldset><legend>%s</legend>%s</fieldset>', $label, $elementString); } else { $labelOpen = $labelHelper->openTag($labelAttributes); $labelClose = $labelHelper->closeTag(); switch ($this->labelPosition) { case self::LABEL_PREPEND: $markup = $labelOpen . $label . $elementString . $labelClose . $elementErrors; break; case self::LABEL_APPEND: default: $markup = $labelOpen . $elementString . $label . $labelClose . $elementErrors; break; } } } else { $markup = $elementString . $elementErrors; } return $markup; }
/** * Render a form <input> element from the provided $element * * @param ElementInterface $element * @param String $buttonContent * @throws Exception\DomainException * @return string */ public function render(ElementInterface $element, $buttonContent = null) { if (null === $buttonContent) { $buttonContent = $element->getLabel(); if (null === $buttonContent) { throw new Exception\DomainException(sprintf('%s expects either button content as the second argument, ' . 'or that the element provided has a label value; neither found', __METHOD__)); } if (null !== ($translator = $this->getTranslator())) { $buttonContent = $translator->translate($buttonContent, $this->getTranslatorTextDomain()); } $element->setLabel(''); } $value = $element->getValue(); $checkedBoole = $value == 1 || $value == 'on'; $checkedClass = $checkedBoole ? 'active"' : ''; $hiddenElement = ''; if ($element->useHiddenElement()) { $hiddenAttributes = ['name' => $element->getName(), 'value' => $element->getUncheckedValue()]; $hiddenElement = sprintf('<input type="hidden" %s%s', $this->createAttributesString($hiddenAttributes), '>'); $element->setUseHiddenElement(false); } $buttonContent = $hiddenElement . PHP_EOL . '<div class="btn-group" data-toggle="buttons">' . PHP_EOL . '<label class="btn btn-default ' . $checkedClass . '">' . PHP_EOL . parent::render($element) . $buttonContent . PHP_EOL . '</label>' . PHP_EOL . '</div>' . PHP_EOL; return $buttonContent; }
public function render(ElementInterface $element, $labelPosition = null) { if ($element->getMessages()) { $html = '<div class="form-group has-error">'; } else { $html = '<div class="form-group">'; } if ($element->getLabel()) { $html .= $this->view->formLabel($element); $element->setAttribute('class', 'form-control'); } if ($element instanceof Submit) { $element->setAttribute('class', 'btn btn-primary'); } $html .= $this->view->formElement($element); if ($element->getMessages()) { $html .= '<div class="help-block">'; // $html .= $this->view->formElementErrors($element); $html .= implode('<br>', $element->getMessages()); $html .= '</div>'; } $html .= '</div>'; return $html; }
/** * Render element's label * * @param ElementInterface $oElement * @return string */ protected function renderLabel(ElementInterface $oElement) { if (($sLabel = $oElement->getLabel()) && ($oTranslator = $this->getTranslator())) { $sLabel = $oTranslator->translate($sLabel, $this->getTranslatorTextDomain()); } return $sLabel; }
public function render(ElementInterface $element) { $elementData = array('type' => $element->getAttribute('type'), 'name' => $element->getName(), 'label' => $element->getLabel(), 'value' => $element->getValue(), 'attributes' => $this->renderAttributes($element, array('name', 'type'))); $specData = $this->getSpec($element); return array_merge($elementData, $specData); }
public function render(ElementInterface $element, $labelPosition = null) { $escapeHtmlHelper = $this->getEscapeHtmlHelper(); $labelHelper = $this->getLabelHelper(); $elementHelper = $this->getElementHelper(); $elementErrorsHelper = $this->getElementErrorsHelper(); $label = $element->getLabel(); $inputErrorClass = $this->getInputErrorClass(); if (isset($label) && '' !== $label) { // Translate the label if (null !== ($translator = $this->getTranslator())) { $label = $translator->translate($label, $this->getTranslatorTextDomain()); } } // Does this element have errors ? if (count($element->getMessages()) > 0 && !empty($inputErrorClass)) { $classAttributes = $element->hasAttribute('class') ? $element->getAttribute('class') . ' ' : ''; $classAttributes = $classAttributes . $inputErrorClass; $element->setAttribute('class', $classAttributes); } if ($this->partial) { $vars = array('element' => $element, 'label' => $label, 'labelAttributes' => $this->labelAttributes, 'labelPosition' => $this->labelPosition, 'renderErrors' => $this->renderErrors); return $this->view->render($this->partial, $vars); } if ($this->renderErrors) { $elementErrors = $elementErrorsHelper->render($element); } $elementString = $elementHelper->render($element); if (isset($label) && '' !== $label) { $label = $escapeHtmlHelper($label); $labelAttributes = $element->getLabelAttributes(); if (empty($labelAttributes)) { $labelAttributes = $this->labelAttributes; } // Multicheckbox elements have to be handled differently as the HTML standard does not allow nested // labels. The semantic way is to group them inside a fieldset $type = $element->getAttribute('type'); if ($type === 'multi_checkbox' || $type === 'radio') { $markup = sprintf('<fieldset><legend>%s</legend>%s</fieldset>', $label, $elementString); } else { if ($element->hasAttribute('id')) { $labelOpen = ''; $labelClose = ''; $label = $labelHelper($element); } else { $labelOpen = $labelHelper->openTag($labelAttributes); $labelClose = $labelHelper->closeTag(); } if ($label !== '' && !$element->hasAttribute('id')) { $label = '<span>' . $label . '</span>'; } // Button element is a special case, because label is always rendered inside it if ($element instanceof Button) { $labelOpen = $labelClose = $label = ''; } switch ($this->labelPosition) { case self::LABEL_PREPEND: $markup = $labelOpen . $label . $elementString . $labelClose; break; case self::LABEL_APPEND: default: $markup = $labelOpen . $elementString . $label . $labelClose; break; } } if ($this->renderErrors) { $markup .= $elementErrors; } } else { if (!empty($this->renderErrors)) { $markup = $elementString . $elementErrors; } else { $markup = $elementString; } } return $markup; }
public function render(ElementInterface $element, $isHorizontal = false, $labelColumns = 2) { $escapeHtmlHelper = $this->getEscapeHtmlHelper(); $labelHelper = $this->getLabelHelper(); $elementHelper = $this->getElementHelper(); $elementErrorsHelper = $this->getElementErrorsHelper(); $label = $element->getLabel(); $inputErrorClass = $this->getInputErrorClass(); if (isset($label) && '' !== $label) { // Translate the label if (null !== ($translator = $this->getTranslator())) { $label = $translator->translate($label, $this->getTranslatorTextDomain()); } } $type = $element->getAttribute('type'); if ($type != 'checkbox' && $type != 'submit' && $type != 'button' && $type != 'radio' && $type != 'file' && $type != 'multi_checkbox') { $classAttributes = $element->hasAttribute('class') ? $element->getAttribute('class') . ' ' : ''; $classAttributes = $classAttributes . 'form-control'; $element->setAttribute('class', $classAttributes); } elseif ($type == 'button' || $type == 'submit') { $classAttributes = $element->hasAttribute('class') ? $element->getAttribute('class') . ' ' : ''; $classAttributes = $classAttributes . 'btn'; $element->setAttribute('class', $classAttributes); } // Does this element have errors ? if (count($element->getMessages()) > 0 && !empty($inputErrorClass)) { $classAttributes = $element->hasAttribute('class') ? $element->getAttribute('class') . ' ' : ''; $classAttributes = $classAttributes . $inputErrorClass; $element->setAttribute('class', $classAttributes); } if ($this->partial) { $vars = ['element' => $element, 'label' => $label, 'labelAttributes' => $this->labelAttributes, 'labelPosition' => $this->labelPosition, 'renderErrors' => $this->renderErrors]; return $this->view->render($this->partial, $vars); } $elementErrors = ''; if ($this->renderErrors) { $elementErrors = $elementErrorsHelper->render($element, ['class' => 'text-danger']); } $elementString = $elementHelper->render($element); $addonAppend = $element->getOption('addon-append'); $addonPrepend = $element->getOption('addon-prepend'); if ($addonAppend !== null || $addonPrepend !== null) { $addonString = '<div class="input-group">'; $addonString .= $this->addAddon($addonPrepend); $addonString .= $elementString; $addonString .= $this->addAddon($addonAppend); $addonString .= '</div>'; $elementString = $addonString; } $elementString .= $this->getHelpBlock($element); // hidden elements do not need a <label> -https://github.com/zendframework/zf2/issues/5607 if (isset($label) && '' !== $label && $type !== 'hidden') { $labelAttributes = []; if ($element instanceof LabelAwareInterface) { $labelAttributes = $element->getLabelAttributes(); } if (!$element instanceof LabelAwareInterface || !$element->getLabelOption('disable_html_escape')) { $label = $escapeHtmlHelper($label); } if (empty($labelAttributes)) { $labelAttributes = $this->labelAttributes; } if (!$element->getAttribute('id') && $element->getName()) { $element->setAttribute('id', $element->getName()); } if ($element->getAttribute('id')) { $labelAttributes['for'] = $element->getAttribute('id'); } if ($isHorizontal) { $labelAttributes['class'] = ' control-label col-sm-' . $labelColumns; if ($element instanceof LabelAwareInterface) { $element->setLabelAttributes(['class' => 'control-label col-sm-' . $labelColumns]); } } else { $labelAttributes['class'] = ' control-label'; if ($element instanceof LabelAwareInterface) { $element->setLabelAttributes(['class' => 'control-label']); } } // Multicheckbox elements have to be handled differently as the HTML standard does not allow nested // labels. The semantic way is to group them inside a fieldset if (!$isHorizontal && ($type === 'multi_checkbox' || $type === 'radio' || $element instanceof MonthSelect)) { $markup = sprintf('<fieldset class="radio"><legend>%s</legend>%s</fieldset>', $label, $elementString); } elseif ($type == 'checkbox') { // Checkboxes need special treatment too if ($isHorizontal) { $markup = '<div class="form-group"><div class="checkbox col-xs-' . (12 - $labelColumns) . ' col-xs-offset-' . $labelColumns . '"><label>' . $elementString . $label . '</label></div></div>'; } else { $markup = '<div class="checkbox"><label>' . $elementString . $label . '</label></div>'; } } else { // Ensure element and label will be separated if element has an `id`-attribute. // If element has label option `always_wrap` it will be nested in any case. if ($element->hasAttribute('id') && ($element instanceof LabelAwareInterface && !$element->getLabelOption('always_wrap'))) { $labelOpen = ''; $labelClose = ''; $label = $labelHelper($element); } else { $labelOpen = $labelHelper->openTag($labelAttributes); $labelClose = $labelHelper->closeTag(); } if ($label !== '' && !$element->hasAttribute('id') || $element instanceof LabelAwareInterface && $element->getLabelOption('always_wrap')) { $label = '<span>' . $label . '</span>'; } $addDivClass = ''; // Button element is a special case, because label is always rendered inside it if ($element instanceof Button) { $labelOpen = $labelClose = $label = ''; $addDivClass = ' col-xs-offset-' . $labelColumns; } if ($type == 'radio') { $addDivClass = ' radio'; } switch ($this->labelPosition) { case self::LABEL_PREPEND: if ($isHorizontal) { $markup = sprintf($this->horizontalRowWrapper, !empty($elementErrors) ? ' has-error' : '', $labelOpen . $label . $labelClose, 12 - $labelColumns, $addDivClass, $elementString . ($this->renderErrors ? $elementErrors : ''), ''); } else { $markup = sprintf($this->rowWrapper, !empty($elementErrors) ? ' has-error' : '', $labelOpen . $label . $labelClose, $elementString); } break; case self::LABEL_APPEND: default: if ($isHorizontal) { $markup = sprintf($this->horizontalRowWrapper, !empty($elementErrors) ? ' has-error' : '', '', 12 - $labelColumns, $addDivClass, $elementString . ($this->renderErrors ? $elementErrors : ''), $labelOpen . $label . $labelClose); } else { $markup = sprintf($this->rowWrapper, !empty($elementErrors) ? ' has-error' : '', $elementString, $labelOpen . $label . $labelClose); } break; } } if (!$isHorizontal && $this->renderErrors) { $markup .= $elementErrors; } } else { if ($isHorizontal && $this->labelPosition == self::LABEL_PREPEND && $type !== 'hidden') { $markup = sprintf($this->horizontalRowWrapper, !empty($elementErrors) ? ' has-error' : '', '', 12 - $labelColumns, ' col-xs-offset-' . $labelColumns, $elementString . ($this->renderErrors ? $elementErrors : ''), ''); } else { if ($this->renderErrors) { $markup = $elementString . $elementErrors; } else { $markup = $elementString; } } } return $markup; }
/** * Helper function to recurse into form elements when rendering summary. * * @param ElementInterface $element * @return string */ protected function renderSummaryElement(ElementInterface $element) { if ($element instanceof Hidden || false === $element->getOption('render_summary')) { return ''; } if ($element instanceof ViewPartialProviderInterface) { $partial = $element->getViewPartial(); $summaryPartial = $partial . '.summary'; $partialParams = array('element' => $element); if (!$this->getView()->resolver($summaryPartial)) { $summaryPartial = $partial; $partialParams['renderSummary'] = true; } return $this->getView()->partial($summaryPartial, $partialParams); } if ($element instanceof EmptySummaryAwareInterface && $element->isSummaryEmpty()) { $emptySummaryNotice = $this->getTranslator()->translate($element->getEmptySummaryNotice(), $this->getTranslatorTextDomain()); $markup = sprintf('<div id="%s-empty-alert" class="empty-summary-notice alert alert-info"><p>%s</p></div>', $element->getAttribute('id'), $emptySummaryNotice); return $markup; } $label = $element->getLabel(); $markup = ''; if ($element instanceof FieldsetInterface) { if (!$element instanceof FormInterface && $label) { $markup .= '<h4>' . $label . '</h4>'; } foreach ($element as $el) { $markup .= $this->renderSummaryElement($el); } return $markup; } $elementValue = $element instanceof \Zend\Form\Element\Textarea ? nl2br($element->getValue()) : $element->getValue(); $markup .= '<div class="row">'; $col = 12; if ($label) { $markup .= '<div class="col-md-3"><strong>' . $label . '</strong></div>'; $col = 9; } $markup .= '<div class="col-md-' . $col . '">' . $elementValue . '</div>' . '</div>'; return $markup; }
/** * Render a form <input> element from the provided $element * * @param ElementInterface $element * @throws Exception\InvalidArgumentException * @throws Exception\DomainException * @return string */ public function render(ElementInterface $element) { if (!$element instanceof CheckboxElement) { throw new Exception\InvalidArgumentException(sprintf('%s requires that the element is of type' . ' Zend\\Form\\Element\\Checkbox', __METHOD__)); } $name = $element->getName(); if (empty($name) && $name !== 0) { throw new Exception\DomainException(sprintf('%s requires that the element has an assigned name;' . ' none discovered', __METHOD__)); } $attributes = $element->getAttributes(); $attributes['name'] = $name; $attributes['type'] = $this->getInputType(); $attributes['value'] = $element->getCheckedValue(); $closingBracket = $this->getInlineClosingBracket(); if ($element->isChecked()) { $attributes['checked'] = 'checked'; } $input = sprintf('<input %s%s', $this->createAttributesString($attributes), $closingBracket); $escapeHtmlHelper = $this->getEscapeHtmlHelper(); $labelHelper = $this->getLabelHelper(); $labelClose = $labelHelper->closeTag(); $labelPosition = $this->getLabelPosition(); $globalLabelAttributes = $element->getLabelAttributes(); if (empty($globalLabelAttributes)) { $globalLabelAttributes = $this->labelAttributes; } $label = $element->getAttribute('description') ?: $element->getLabel(); $labelAttributes = $this->labelAttributes ?: $element->getLabelAttributes(); if (null !== ($translator = $this->getTranslator())) { $label = $translator->translate($label, $this->getTranslatorTextDomain()); } $label = $escapeHtmlHelper($label); $labelOpen = $labelHelper->openTag($labelAttributes); $template = $labelOpen . '%s%s' . $labelClose; switch ($labelPosition) { case static::LABEL_PREPEND: $rendered = sprintf($template, $label, $input); break; case static::LABEL_APPEND: default: $rendered = sprintf($template, $input, $label); break; } // Render hidden element $useHiddenElement = null !== $this->useHiddenElement ? $this->useHiddenElement : (method_exists($element, 'useHiddenElement') ? $element->useHiddenElement() : false); if ($useHiddenElement) { $hiddenAttributes = array('name' => $attributes['name'], 'value' => $element->getUncheckedValue()); $rendered = sprintf('<input type="hidden" %s%s', $this->createAttributesString($hiddenAttributes), $closingBracket) . $rendered; } return $rendered; }
/** * Utility form helper that renders a label (if it exists), an element and errors * * @param ElementInterface $element * @param null|string $labelPosition * @throws \Zend\Form\Exception\DomainException * @return string */ public function render(ElementInterface $element, $labelPosition = null) { $escapeHtmlHelper = $this->getEscapeHtmlHelper(); $labelHelper = $this->getLabelHelper(); $elementHelper = $this->getElementHelper(); $elementErrorsHelper = $this->getElementErrorsHelper(); $label = $element->getLabel(); $inputErrorClass = $this->getInputErrorClass(); if (is_null($labelPosition)) { $labelPosition = $this->labelPosition; } if (isset($label) && '' !== $label) { // Translate the label if (null !== ($translator = $this->getTranslator())) { $label = $translator->translate($label, $this->getTranslatorTextDomain()); } } // Does this element have errors ? if (count($element->getMessages()) > 0 && !empty($inputErrorClass)) { $classAttributes = $element->hasAttribute('class') ? $element->getAttribute('class') . ' ' : ''; $classAttributes = $classAttributes . $inputErrorClass; $element->setAttribute('class', $classAttributes); } if ($this->partial) { $vars = ['element' => $element, 'label' => $label, 'labelAttributes' => $this->labelAttributes, 'labelPosition' => $labelPosition, 'renderErrors' => $this->renderErrors]; return $this->view->render($this->partial, $vars); } if ($this->renderErrors) { $elementErrors = $elementErrorsHelper->render($element); } $elementString = $elementHelper->render($element); // hidden elements do not need a <label> -https://github.com/zendframework/zf2/issues/5607 $type = $element->getAttribute('type'); if (isset($label) && '' !== $label && $type !== 'hidden') { $labelAttributes = []; if ($element instanceof LabelAwareInterface) { $labelAttributes = $element->getLabelAttributes(); } if (!$element instanceof LabelAwareInterface || !$element->getLabelOption('disable_html_escape')) { $label = $escapeHtmlHelper($label); } if (empty($labelAttributes)) { $labelAttributes = $this->labelAttributes; } // Multicheckbox elements have to be handled differently as the HTML standard does not allow nested // labels. The semantic way is to group them inside a fieldset if ($type === 'multi_checkbox' || $type === 'radio' || $element instanceof MonthSelect || $element instanceof Captcha) { $markup = sprintf('<fieldset><legend>%s</legend>%s</fieldset>', $label, $elementString); } else { // Ensure element and label will be separated if element has an `id`-attribute. // If element has label option `always_wrap` it will be nested in any case. if ($element->hasAttribute('id') && ($element instanceof LabelAwareInterface && !$element->getLabelOption('always_wrap'))) { $labelOpen = ''; $labelClose = ''; $label = $labelHelper->openTag($element) . $label . $labelHelper->closeTag(); } else { $labelOpen = $labelHelper->openTag($labelAttributes); $labelClose = $labelHelper->closeTag(); } if ($label !== '' && !$element->hasAttribute('id') || $element instanceof LabelAwareInterface && $element->getLabelOption('always_wrap')) { $label = '<span>' . $label . '</span>'; } // Button element is a special case, because label is always rendered inside it if ($element instanceof Button) { $labelOpen = $labelClose = $label = ''; } if ($element instanceof LabelAwareInterface && $element->getLabelOption('label_position')) { $labelPosition = $element->getLabelOption('label_position'); } switch ($labelPosition) { case self::LABEL_PREPEND: $markup = $labelOpen . $label . $elementString . $labelClose; break; case self::LABEL_APPEND: default: $markup = $labelOpen . $elementString . $label . $labelClose; break; } } if ($this->renderErrors) { $markup .= $elementErrors; } } else { if ($this->renderErrors) { $markup = $elementString . $elementErrors; } else { $markup = $elementString; } } return $markup; }
/** * Render a fieldset by iterating through all fieldsets and elements * * @param ElementInterface $element * @return string */ public function render(ElementInterface $element) { $renderer = $this->getView(); if (!method_exists($renderer, 'plugin')) { // Bail early if renderer is not pluggable return ''; } $markup = ''; $escapeHtmlHelper = $this->getEscapeHtmlHelper(); $rowHelper = $this->getRowHelper(); foreach ($element->getIterator() as $elementOrFieldset) { if ($elementOrFieldset instanceof FieldsetInterface) { $markup .= $this->render($elementOrFieldset); } elseif ($elementOrFieldset instanceof ElementInterface) { $markup .= $rowHelper($elementOrFieldset); } } // Every collection is wrapped by a fieldset if needed if ($this->shouldWrap) { $label = $element->getLabel(); if (!empty($label)) { $label = $escapeHtmlHelper($label); $markup = sprintf('<fieldset><legend>%s</legend>%s</fieldset>', $label, $markup); } } return $markup; }