public function render(ElementInterface $element) { $element->setAttribute('data-role', 'datepicker'); if ($element->getOption('default-today')) { $element->setAttribute('data-default-today', 'true'); } return parent::render($element); }
/** * Prepares the element prior to rendering * @param \Zend\Form\ElementInterface $element * @param string $formType * @param array $displayOptions * @return void */ protected function prepareElementBeforeRendering(ElementInterface $element, $formType, array $displayOptions) { if (array_key_exists('class', $displayOptions)) { $class = $element->getAttribute('class'); $class = $this->genUtil->addWords($displayOptions['class'], $class); $escapeHtmlAttrHelper = $this->getEscapeHtmlAttrHelper(); $class = $this->genUtil->escapeWords($class, $escapeHtmlAttrHelper); $element->setAttribute('class', $class); } if (array_key_exists('rows', $displayOptions)) { $element->setAttribute('rows', (int) $displayOptions['rows']); } $this->formUtil->addIdAttributeIfMissing($element); }
public function render(ElementInterface $element) { if ($element->getOption('use-switch')) { $element->setAttribute('data-switch', '1'); } return parent::render($element); }
public function render(ElementInterface $element = null) { if ($element->getMessages()) { $element->setAttribute('class', 'error ' . $element->getAttribute('class')); } return parent::render($element); }
/** * Render a form <select> element from the provided $element * @param ElementInterface $element * @param null|string $formType * @param array $displayOptions * @return string */ public function render(ElementInterface $element, $formType = null, array $displayOptions = array()) { if (array_key_exists('class', $displayOptions)) { $class = $element->getAttribute('class'); $class = $this->genUtil->addWords($displayOptions['class'], $class); $escapeHtmlAttrHelper = $this->getEscapeHtmlAttrHelper(); $class = $this->genUtil->escapeWords($class, $escapeHtmlAttrHelper); $element->setAttribute('class', $class); } if (array_key_exists('size', $displayOptions)) { $element->setAttribute('size', (int) $displayOptions['size']); } $this->formUtil->addIdAttributeIfMissing($element); $html = parent::render($element); return $html; }
/** * {@inheritDoc} */ public function render(ElementInterface $element) { if (!$element instanceof LoginFieldElement) { return ''; } $fields = $element->getFields(); if (1 == count($fields)) { $element->setAttribute('placeholder', current($fields)); return parent::render($element); } $template = $element->getOption('template') ?: '<div class="input-group">%s</div>'; $pattern = <<<EOT <input name="%s[0]" %s%s <span class="input-group-addon"> <select class="pull-right" name="%s[1]"> %s </select> </span> EOT; $name = $element->getName(); list($value, $field) = $element->getValue(); $attributes = array_replace($element->getAttributes(), array('type' => 'text', 'value' => $value)); if (!isset($attributes['class'])) { $attributes['class'] = 'form-control'; } $attribString = $this->createAttributesString($attributes); $patternField = '<option value="%s"%s>%s</option>' . PHP_EOL; $fieldString = ''; foreach ($fields as $key => $label) { $class = $field == $key ? ' selected' : ''; $fieldString .= sprintf($patternField, $key, $class, $label); } $html = sprintf($template, sprintf($pattern, $name, $attribString, $this->getInlineClosingBracket(), $name, $fieldString)); return $html; }
/** * Render a form <input> element from the provided $element * * @param ElementInterface $element Zend Form 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'; } if ($element->getAttribute('class') != 'input-checkbox') { $rendered = sprintf('<input %s%s', $this->createAttributesString($attributes), $closingBracket); } else { if ($element->getAttribute('id') == '') { $element->setAttribute('id', 'checkbox-' . uniqid()); } unset($attributes['class']); $rendered = sprintf('<span class="input-checkbox"><input %s%s<label for="%s"></label></span>', $this->createAttributesString($attributes), $closingBracket, $element->getAttribute('id')); } return $rendered; }
public function render(ElementInterface $element) { $element->setAttribute('class', $element->getAttribute('class') . " btn"); $input = parent::render($element); $options = $element->getOptions(); if (!empty($options['as-group'])) { $col_left_width = 'sm-6'; $col_right_width = 'sm-6'; $button_column = 'left'; if (!empty($options['col-left-width'])) { $col_left_width = $options['col-left-width']; } if (!empty($options['col-right-width'])) { $col_right_width = $options['col-right-width']; } if (!empty($options['button-column'])) { $button_column = $options['button-column']; } $colFormat = '<div class="col-%s">%s</div><div class="col-%s">%s</div>'; $buttonFormat = '<div class="btn-group btn-group-justified"><div class="btn-group">%s</div></div>'; $inputContainer = sprintf($buttonFormat, $input); $leftColumn = $inputContainer; $rightColumn = ''; if ($button_column != 'left') { $leftColumn = ''; $rightColumn = $inputContainer; } $input = sprintf($colFormat, $col_left_width, $leftColumn, $col_right_width, $rightColumn); } return $input; }
/** * {@inheritDoc} */ public function render(ElementInterface $element) { if ($element->hasAttribute('class')) { $class = $element->getAttribute('class'); if (strpos($class, 'selectpicker') !== false && $this->getView()->jQuery()->twbs->bootstrapSelect) { if (!$element->hasAttribute('data-width')) { $element->setAttribute('data-width', 'auto'); } if (strpos($class, 'btn-') === false) { $class .= ' btn-default'; } $element->setAttribute('data-style', $class); $element->setAttribute('class', 'selectpicker'); } } return parent::render($element); }
public function render(ElementInterface $element) { if ($element->hasAttribute('data-placeholder')) { $placeholder = $element->getAttribute('data-placeholder'); $placeholder = $this->getTranslator()->translate($placeholder, $this->getTranslatorTextDomain()); $element->setAttribute('data-placeholder', $placeholder); } return parent::render($element); }
/** * Render an element * * @param ElementInterface $oElement * @return string */ public function render(ElementInterface $oElement) { // Add form-controll class $sElementType = $oElement->getAttribute('type'); if (!in_array($sElementType, $this->options->getIgnoredViewHelpers()) && !$oElement instanceof Collection) { $sElementClass = $oElement->getAttribute('class'); if ($sElementClass) { if (!preg_match('/(\\s|^)form-control(\\s|$)/', $sElementClass)) { $oElement->setAttribute('class', trim($sElementClass . ' form-control')); } } else { $oElement->setAttribute('class', 'form-control'); } } $sMarkup = parent::render($oElement); // Addon prepend $aAddOnPrepend = $oElement->getOption('add-on-prepend'); if ($aAddOnPrepend) { $sMarkup = $this->renderAddOn($aAddOnPrepend) . $sMarkup; } // Addon append $aAddOnAppend = $oElement->getOption('add-on-append'); if ($aAddOnAppend) { $sMarkup .= $this->renderAddOn($aAddOnAppend); } if ($aAddOnAppend || $aAddOnPrepend) { $sSpecialClass = ''; // Input size $sElementClass = $oElement->getAttribute('class'); if ($sElementClass) { if (preg_match('/(\\s|^)input-lg(\\s|$)/', $sElementClass)) { $sSpecialClass .= ' input-group-lg'; } elseif (preg_match('/(\\s|^)input-sm(\\s|$)/', $sElementClass)) { $sSpecialClass .= ' input-group-sm'; } } return sprintf(self::$inputGroupFormat, trim($sSpecialClass), $sMarkup); } return $sMarkup; }
/** * Prepares the element prior to rendering * @param \Zend\Form\ElementInterface $element * @param string $formType * @param array $displayOptions * @return void */ protected function prepareElementBeforeRendering(ElementInterface $element, $formType, array $displayOptions) { $class = $element->getAttribute('class'); $class = $this->genUtil->addWords('btn', $class); if (array_key_exists('class', $displayOptions)) { $class = $this->genUtil->addWords($displayOptions['class'], $class); } if ($element->getOption('primary') && $element->getOption('primary') == true) { $class = $this->genUtil->addWords('btn-primary', $class); } $class = $this->genUtil->escapeWords($class, $this->getEscapeHtmlAttrHelper()); $element->setAttribute('class', $class); }
/** * 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; }
/** * Prepares the element prior to rendering * @param \Zend\Form\ElementInterface $element * @param string $formType * @param array $displayOptions * @return void */ protected function prepareElementBeforeRendering(ElementInterface $element, $formType, array $displayOptions) { $class = $element->getAttribute('class'); if (array_key_exists('class', $displayOptions)) { $class = $this->genUtil->addWords($displayOptions['class'], $class); } if ($formType == FormUtil::FORM_TYPE_SEARCH) { $class = $this->genUtil->addWords('search-query', $class); } $escapeHtmlAttrHelper = $this->getEscapeHtmlAttrHelper(); $class = $this->genUtil->escapeWords($class, $escapeHtmlAttrHelper); $element->setAttribute('class', $class); $this->formUtil->addIdAttributeIfMissing($element); }
/** * Remove class * * @param ElementInterface $element * @param string $class * @return ElementInterface */ public function removeClass(ElementInterface $element, $class) { $classes = explode(' ', $element->getAttribute('class')); $class = trim($class); if (in_array($class, $classes)) { foreach ($classes as $key => $name) { if ($name === $class) { unset($classes[$key]); } } $element->setAttribute('class', implode(' ', $classes)); } return $element; }
/** * Render an element * @param \Zend\Form\ElementInterface $oElement * @return string */ public function render(\Zend\Form\ElementInterface $oElement) { // Add form-controll class $sElementType = $oElement->getAttribute('type'); if (!in_array($sElementType, array('file', 'checkbox', 'radio', 'submit', 'multi_checkbox', 'static', 'button', 'reset')) && !$oElement instanceof \Zend\Form\Element\Collection) { if ($sElementClass = $oElement->getAttribute('class')) { if (!preg_match('/(\\s|^)form-control(\\s|$)/', $sElementClass)) { $oElement->setAttribute('class', trim($sElementClass . ' form-control')); } } else { $oElement->setAttribute('class', 'form-control'); } } $sMarkup = parent::render($oElement); // Addon prepend if ($aAddOnPrepend = $oElement->getOption('add-on-prepend')) { $sMarkup = $this->renderAddOn($aAddOnPrepend) . $sMarkup; } // Addon append if ($aAddOnAppend = $oElement->getOption('add-on-append')) { $sMarkup .= $this->renderAddOn($aAddOnAppend); } if ($aAddOnAppend || $aAddOnPrepend) { $sSpecialClass = ''; // Input size if ($sElementClass = $oElement->getAttribute('class')) { if (preg_match('/(\\s|^)input-lg(\\s|$)/', $sElementClass)) { $sSpecialClass .= ' input-group-lg'; } elseif (preg_match('/(\\s|^)input-sm(\\s|$)/', $sElementClass)) { $sSpecialClass .= ' input-group-sm'; } } return sprintf(self::$inputGroupFormat, trim($sSpecialClass), $sMarkup); } return $sMarkup; }
/** * @param File $element * @return string */ public function render(ElementInterface $element) { if ($element instanceof File && $element->getFileObject()) { $fileObject = $element->getFileObject(); $fm = FileManager::getInstance(); $element->setAttribute('class', 'hidden'); $render = parent::render($element); $render .= '<div class="file-container"><div class="file-icon">'; if ($element instanceof FileImage) { $render .= '<img src="' . $this->view->basePath($fm->getThumbImage($fileObject, 64, 64)) . '">'; } else { $render .= '<img src="/img/mfcc-admin-module/file-icons/' . $fileObject->getFileExtension() . '.svg">'; } $render .= '</div><div class="file-info"><strong>' . $fileObject->getName() . '</strong><br><span class="file-size">' . $fileObject->getFormattedSize() . '</span><button type="button" class="btn btn-xs btn-danger file-remove"><i class="fa fa-remove"></i> Remove</button></div></div>'; } else { $render = parent::render($element); } return $render; }
/** * Renders editor contents * * @param ElementInterface $element * @return string */ public function render(ElementInterface $element) { $options = array_merge($this->getOptions(), $element->getOptions()); $attributes = array_merge($this->getAttributes(), $element->getAttributes()); $view = $this->view; // Set up set and skin $set = isset($options['set']) ? $options['set'] : 'html'; $skin = isset($options['skin']) ? $options['skin'] : 'simple'; // Set up CSS $view->css(sprintf('%s/editor/markitup/skins/%s/style.css', Pi::url('script'), $skin)); $view->css(sprintf('%s/editor/markitup/sets/%s/style.css', Pi::url('script'), $set)); // Set up JavaScript $view->jQuery(); $view->js(Pi::url('script') . '/editor/markitup/jquery.markitup.js'); $view->js(sprintf('%s/editor/markitup/sets/%s/set.js', Pi::url('script'), $set)); $parserpath = ''; if (!empty($options['sets'][$set]['parser_path'])) { $parserpath = $options['sets'][$set]['parser_path']; } else { $path = sprintf('%s/editor/markitup/sets/%s/preview.php', Pi::path('script'), $set); if (file_exists($path)) { $parserpath = sprintf('~/sets/%s/preview.php', $set); } } $scriptJs = <<<EOT \$(document).ready(function() { mySettings.previewParserPath = '{$parserpath}'; mySettings.previewParserVar = 'preview'; \$('#%s').markItUp(mySettings); }); EOT; if (isset($attributes['id'])) { $id = $attributes['id']; } else { $id = uniqid($element->getName()); } $element->setAttribute('id', $id); $js = sprintf($scriptJs, $id); $view->HeadScript('script', $js); }
/** * If the 'id' attribute of the element is not defined, it is set to equal the element's name value * //TODO - escape html attr? * @param ElementInterface $element */ public function addIdAttributeIfMissing(ElementInterface $element) { if (!$element->getAttribute('id')) { $element->setAttribute('id', $element->getName()); } }
public function setZendFormElement(ElementInterface $element) { $element->setAttribute('data-ui-select2', $this->selectOptions); return parent::setZendFormElement($element); }
/** * @see \Zend\Form\View\Helper\FormButton::render() * @param \Zend\Form\ElementInterface $oElement * @param string $sButtonContent * @throws \LogicException * @throws \Exception * @return string */ public function render(\Zend\Form\ElementInterface $oElement, $sButtonContent = null) { if ($sClass = $oElement->getAttribute('class')) { if (!preg_match('/(\\s|^)btn(\\s|$)/', $sClass)) { $sClass .= ' btn'; } if (!preg_match('/(\\s|^)btn-.*(\\s|$)/', $sClass)) { $sClass .= ' btn-default'; } else { $bHasOption = false; foreach (self::$buttonOptions as $sButtonOption) { if (preg_match('/(\\s|^)btn-' . $sButtonOption . '.*(\\s|$)/', $sClass)) { $bHasOption = true; break; } } if (!$bHasOption) { $sClass .= ' btn-default'; } } $oElement->setAttribute('class', trim($sClass)); } else { $oElement->setAttribute('class', 'btn btn-default'); } //Retrieve glyphicon options $aGlyphiconOptions = $oElement->getOption('glyphicon'); //Define button content if (null === $sButtonContent) { $sButtonContent = $oElement->getLabel(); if (null === $sButtonContent && !$aGlyphiconOptions) { throw new \DomainException(sprintf('%s expects either button content as the second argument, ' . 'or that the element provided has a label value or a glyphicon option; neither found', __METHOD__)); } if (null !== ($oTranslator = $this->getTranslator())) { $sButtonContent = $oTranslator->translate($sButtonContent, $this->getTranslatorTextDomain()); } } if (!$oElement instanceof LabelAwareInterface || !$oElement->getLabelOption('disable_html_escape')) { $escapeHtmlHelper = $this->getEscapeHtmlHelper(); $sButtonContent = $escapeHtmlHelper($sButtonContent); } //Glyphicon if ($aGlyphiconOptions) { if (is_scalar($aGlyphiconOptions)) { $aGlyphiconOptions = array('icon' => $aGlyphiconOptions, 'position' => self::GLYPHICON_PREPEND); } elseif (!is_array($aGlyphiconOptions)) { throw new \LogicException('"glyphicon" button option expects a scalar value or an array, "' . gettype($aGlyphiconOptions) . '" given'); } elseif (!is_scalar($aGlyphiconOptions['icon'])) { throw new \LogicException('Glyphicon "icon" option expects a scalar value, "' . gettype($aGlyphiconOptions['icon']) . '" given'); } elseif (empty($aGlyphiconOptions['position'])) { $aGlyphiconOptions['position'] = 'prepend'; } elseif (!is_string($aGlyphiconOptions['position'])) { throw new \LogicException('Glyphicon "position" option expects a string, "' . gettype($aGlyphiconOptions['position']) . '" given'); } elseif ($aGlyphiconOptions['position'] !== self::GLYPHICON_PREPEND && $aGlyphiconOptions['position'] !== self::GLYPHICON_APPEND) { throw new \LogicException('Glyphicon "position" option allows "' . self::GLYPHICON_PREPEND . '" or "' . self::GLYPHICON_APPEND . '", "' . $aGlyphiconOptions['position'] . '" given'); } if ($sButtonContent) { if ($aGlyphiconOptions['position'] === self::GLYPHICON_PREPEND) { $sButtonContent = $this->getView()->glyphicon($aGlyphiconOptions['icon'], isset($aGlyphiconOptions['attributes']) ? $aGlyphiconOptions['attributes'] : null) . ' ' . $sButtonContent; } else { $sButtonContent .= ' ' . $this->getView()->glyphicon($aGlyphiconOptions['icon'], isset($aGlyphiconOptions['attributes']) ? $aGlyphiconOptions['attributes'] : null); } } else { $sButtonContent = $this->getView()->glyphicon($aGlyphiconOptions['icon'], isset($aGlyphiconOptions['attributes']) ? $aGlyphiconOptions['attributes'] : null); } } //Dropdown button if ($aDropdownOptions = $oElement->getOption('dropdown')) { if (!is_array($aDropdownOptions)) { throw new \LogicException('"dropdown" option expects an array, "' . gettype($aDropdownOptions) . '" given'); } if (empty($aDropdownOptions['split'])) { //Class if (!preg_match('/(\\s|^)dropdown-toggle(\\s|$)/', $sClass = $oElement->getAttribute('class'))) { $oElement->setAttribute('class', trim($sClass . ' dropdown-toggle')); } //data-toggle $oElement->setAttribute('data-toggle', 'dropdown'); $sMarkup = $this->openTag($oElement) . sprintf(self::$dropdownToggleFormat, $sButtonContent) . $this->closeTag(); } else { $sMarkup = $this->openTag($oElement) . $sButtonContent . $this->closeTag() . sprintf(self::$dropdownCaretFormat, $oElement->getAttribute('class')); } //No container if ($oElement->getOption('disable-twb')) { return $sMarkup . $this->getView()->dropdown()->renderListItems($aDropdownOptions); } //Render button + dropdown return sprintf(self::$dropdownContainerFormat, empty($aDropdownOptions['dropup']) ? '' : 'dropup', $sMarkup . $this->getView()->dropdown()->renderListItems($aDropdownOptions)); } return $this->openTag($oElement) . $sButtonContent . $this->closeTag(); }
/** * Gets the id of an element. Makes one up if there is none yet. * @return string */ protected function getElementId(ElementInterface $element) { $elementId = $element->getAttribute('id'); if ($elementId) { return $elementId; } // Generate an id if the element has none yet. $newId = 'coll-' . substr(sha1(rand(0, 9999) . $element->getName()), 0, 7); $element->setAttribute('id', $newId); return $newId; }
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; }
/** * @see FormButton::render() * @param ElementInterface $oElement * @param string $sButtonContent * @throws LogicException * @throws Exception * @return string */ public function render(ElementInterface $oElement, $sButtonContent = null) { if ($sClass = $oElement->getAttribute('class')) { if (!preg_match('/(\\s|^)btn(\\s|$)/', $sClass)) { $sClass .= ' btn'; } if (!preg_match('/(\\s|^)btn-.*(\\s|$)/', $sClass)) { $sClass .= ' btn-default'; } else { $bHasOption = false; foreach (self::$buttonOptions as $sButtonOption) { if (preg_match('/(\\s|^)btn-' . $sButtonOption . '.*(\\s|$)/', $sClass)) { $bHasOption = true; break; } } if (!$bHasOption) { $sClass .= ' btn-default'; } } $oElement->setAttribute('class', trim($sClass)); } else { $oElement->setAttribute('class', 'btn btn-default'); } // Retrieve icon options if (null !== ($aIconOptions = $oElement->getOption('glyphicon'))) { $sIconHelperMethod = 'glyphicon'; } elseif (null !== ($aIconOptions = $oElement->getOption('fontAwesome'))) { $sIconHelperMethod = 'fontAwesome'; } elseif (null !== ($aIconOptions = $oElement->getOption('flaticon'))) { $sIconHelperMethod = 'flaticon'; } /* * Define button content */ if (null === $sButtonContent) { $sButtonContent = $oElement->getLabel(); if (!$sButtonContent) { $sButtonContent = $oElement->getValue(); } if (null === $sButtonContent && !$aIconOptions) { throw new DomainException(sprintf('%s expects either button content as the second argument, ' . 'or that the element provided has a label value, a glyphicon option, or a fontAwesome option; none found', __METHOD__)); } if (null !== ($oTranslator = $this->getTranslator())) { $sButtonContent = $oTranslator->translate($sButtonContent, $this->getTranslatorTextDomain()); } } if (!$oElement instanceof LabelAwareInterface || !$oElement->getLabelOption('disable_html_escape')) { $oEscapeHtmlHelper = $this->getEscapeHtmlHelper(); $sButtonContent = $oEscapeHtmlHelper($sButtonContent); } /* * Manage icon */ if ($aIconOptions) { if (is_scalar($aIconOptions)) { $aIconOptions = array('icon' => $aIconOptions, 'position' => self::ICON_PREPEND); } if (!is_array($aIconOptions)) { throw new LogicException(sprintf('"glyphicon" and "fontAwesome" button option expects a scalar value or an array, "%s" given', is_object($aIconOptions) ? get_class($aIconOptions) : gettype($aIconOptions))); } $position = 'prepend'; if (!empty($aIconOptions['position'])) { $position = $aIconOptions['position']; } if (!empty($aIconOptions['icon'])) { $icon = $aIconOptions['icon']; } if (!is_scalar($icon)) { throw new LogicException(sprintf('Glyphicon and fontAwesome "icon" option expects a scalar value, "%s" given', is_object($icon) ? get_class($icon) : gettype($icon))); } elseif (!is_string($position)) { throw new LogicException(sprintf('Glyphicon and fontAwesome "position" option expects a string, "%s" given', is_object($position) ? get_class($position) : gettype($position))); } elseif ($position !== self::ICON_PREPEND && $position !== self::ICON_APPEND) { throw new LogicException(sprintf('Glyphicon and fontAwesome "position" option allows "' . self::ICON_PREPEND . '" or "' . self::ICON_APPEND . '", "%s" given', is_object($position) ? get_class($position) : gettype($position))); } if ($sButtonContent) { if ($position === self::ICON_PREPEND) { $sButtonContent = $this->getView()->{$sIconHelperMethod}($icon, isset($aIconOptions['attributes']) ? $aIconOptions['attributes'] : null) . ' ' . $sButtonContent; } else { $sButtonContent .= ' ' . $this->getView()->{$sIconHelperMethod}($icon, isset($aIconOptions['attributes']) ? $aIconOptions['attributes'] : null); } } else { $sButtonContent = $this->getView()->{$sIconHelperMethod}($icon, isset($aIconOptions['attributes']) ? $aIconOptions['attributes'] : null); } } /* * Dropdown button */ if ($aDropdownOptions = $oElement->getOption('dropdown')) { if (!is_array($aDropdownOptions)) { throw new LogicException(sprintf('"dropdown" option expects an array, "%s" given', is_object($aDropdownOptions) ? get_class($aDropdownOptions) : gettype($aDropdownOptions))); } if (empty($aDropdownOptions['split'])) { /* * Class */ if (!preg_match('/(\\s|^)dropdown-toggle(\\s|$)/', $sClass = $oElement->getAttribute('class'))) { $oElement->setAttribute('class', trim($sClass . ' dropdown-toggle')); } /* * data-toggle */ $oElement->setAttribute('data-toggle', 'dropdown'); $sMarkup = $this->openTag($oElement) . sprintf(self::$dropdownToggleFormat, $sButtonContent) . $this->closeTag(); } else { /* * Add caret element */ $sMarkup = $this->openTag($oElement) . $sButtonContent . $this->closeTag() . sprintf(self::$dropdownCaretFormat, $oElement->getAttribute('class')); } /* * No container */ if ($oElement->getOption('disable-twb')) { return $sMarkup . $this->getView()->dropdown()->renderListItems($aDropdownOptions); } /* * Render button + dropdown */ return sprintf(self::$dropdownContainerFormat, empty($aDropdownOptions['dropup']) ? '' : 'dropup', $sMarkup . $this->getView()->dropdown()->renderListItems($aDropdownOptions)); } return $this->openTag($oElement) . $sButtonContent . $this->closeTag(); }
/** * Render. * * @param Select|ElementInterface $element * @param string $groupWrapper * @param string $controlWrapper * * @return string */ public function render(ElementInterface $element, $groupWrapper = null, $controlWrapper = null) { $labelHelper = $this->getLabelHelper(); $escapeHelper = $this->getEscapeHtmlHelper(); $elementHelper = $this->getElementHelper(); $elementErrorHelper = $this->getElementErrorHelper(); $descriptionHelper = $this->getDescriptionHelper(); $groupWrapper = $groupWrapper ?: $this->groupWrapper; $controlWrapper = $controlWrapper ?: $this->controlWrapper; /* * Disable by default the inArrayValidator */ $element->setDisableInArrayValidator(true); $elementHelper->getView(); $id = $element->getAttribute('id') ?: $element->getAttribute('name'); $element->setAttribute('class', 'form-control'); $controlLabel = ''; $label = $element->getLabel(); if (strlen($label) === 0) { $label = $element->getOption('label') ?: $element->getAttribute('label'); } if ($label && !$element->getOption('skipLabel')) { $controlLabel .= $labelHelper->openTag(['class' => 'col-lg-3 ' . ($element->getOption('wrapCheckboxInLabel') ? 'checkbox' : 'control-label')] + ($element->hasAttribute('id') ? ['for' => $id] : [])); if (null !== ($translator = $labelHelper->getTranslator())) { $label = $translator->translate($label, $labelHelper->getTranslatorTextDomain()); } if ($element->getOption('wrapCheckboxInLabel')) { $controlLabel .= $elementHelper->render($element) . ' '; } if ($element->getOption('skipLabelEscape')) { $controlLabel .= $label; } else { $controlLabel .= $escapeHelper($label); } $controlLabel .= $labelHelper->closeTag(); } if ($element->getOption('wrapCheckboxInLabel')) { $controls = $controlLabel; $controlLabel = ''; } else { $controls = $elementHelper->render($element); } $controls = str_replace(['<select'], ['<select class="select-picker-contact" data-live-search="true"'], $controls); /*** * Now apply the magic */ if ($element->isMultiple()) { $controls = str_replace(['data-live-search="true"'], ['multiple data-live-search="true"'], $controls); } $html = $controlLabel . sprintf($controlWrapper, $id, $controls, $descriptionHelper->render($element), $elementErrorHelper->render($element)); $addtClass = $element->getMessages() ? ' has-error' : ''; return sprintf($groupWrapper, $addtClass, $id, $html); }
public function render(ElementInterface $element) { $element->setAttribute('class', 'checkbox-toggle'); return parent::render($element); }
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; }
/** * 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) { // render function complains if I add the $options param, so we need to catch it like this $options = func_num_args() > 1 ? func_get_arg(1) : array(); $escapeHtmlHelper = $this->getEscapeHtmlHelper(); $labelHelper = $this->getLabelHelper(); $elementHelper = $this->getElementHelper(); $helpBlockHelper = $this->getHelpBlockHelper(); $elementErrorsHelper = $this->getElementErrorsHelper(); $label = $element->getLabel(); $helpBlock = $element->getOption('helpblock'); $inputErrorClass = $this->getInputErrorClass(); // if I have a label, try and translate it if (isset($label) && '' !== $label) { // Translate the label if (null !== ($translator = $this->getTranslator())) { $label = $translator->translate($label, $this->getTranslatorTextDomain()); } } // if element does not have and ID, create one out of it's name if (!$element->hasAttribute('id')) { $name = $element->getAttribute('name'); if (empty($name)) { $name = 'input'; } if (empty($this->counterName[$name])) { $this->counterName[$name] = 0; } $element->setAttribute('id', trim($name, "\t\n\r\v []<>{}") . '-' . $this->counterName[$name]); $this->counterName[$name]++; } // 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 I have a partial for this element 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); } // render errors if ($this->renderErrors) { $elementErrors = $elementErrorsHelper->render($element); } // render element $elementString = $elementHelper->render($element); // label 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 === 'checkbox' || $type == 'radio') { if (empty($labelAttributes)) { $labelAttributes = array('class' => 'checkbox'); } if ($labelAttributes instanceof LabelOptionsAwareInterface) { $attributes = $labelAttributes->getLabelAttributes(); $attributes['class'] = 'checkbox' . (empty($attributes['class']) ? '' : ' ' . $attributes['class']); $labelAttributes->setLabelAttributes($attributes); } } if ($type === 'multi_checkbox' || $type === 'radio') { $markup = sprintf('<label class="control-label">%s</label>%s', $label, str_replace('control-label ', '', $elementString)); } else { if ($element->hasAttribute('id')) { $labelOpen = ''; $labelClose = ''; if ($type === 'checkbox' || $type === 'radio') { $element->setLabelAttributes($labelAttributes); } $label = $labelHelper($element, null, null, $options); } else { $labelOpen = $labelHelper->openTag($labelAttributes, $options); $labelClose = $labelHelper->closeTag(); } // var_dump(array($label, $labelOpen, $labelClose)); // Button element is a special case, because label is always rendered inside it if ($element instanceof Button) { $labelOpen = $labelClose = $label = ''; } if (($type === 'checkbox' || $type === 'radio') && Form::getBootstrapType() !== Form::HORIZONTAL) { $label = $labelOpen . $label . $labelClose; $label = preg_replace('/(<label[^>]+>)/i', '$1%s ', $label); $markup = sprintf($label, $elementString); } else { switch ($this->labelPosition) { case self::LABEL_PREPEND: $markup = $labelOpen . $label . $elementString . $labelClose; break; case self::LABEL_APPEND: default: $markup = $labelOpen . $elementString . $label . $labelClose; break; } } // var_dump($markup); } } if ($this->renderErrors) { $markup = (empty($markup) ? $elementString : $markup) . $elementErrors; } /*else { $markup = $elementString; }*/ if (isset($helpBlock) && '' !== $helpBlock) { $markup .= $helpBlockHelper->openTag($element->getOption('helpblock_attributes'), $element->getOption('helpblock_mode')) . $helpBlock . $helpBlockHelper->closeTag(); } // if type is horizontal or vertical, start wrapping if (Form::getBootstrapType() === Form::VERTICAL) { $markup = sprintf('<div class="control-group%s"><div class="controls">%s</div></div>', count($element->getMessages()) ? ' error' : '', $markup); } elseif (Form::getBootstrapType() === Form::HORIZONTAL) { $pos = strpos($markup, '</label'); if ($pos !== FALSE && $pos > 0) { $pos += 8; $markup2 = substr($markup, 0, $pos) . '<div class="controls">' . substr($markup, $pos) . '</div>'; $markup = sprintf('<div class="control-group%s">%s</div>', count($element->getMessages()) ? ' error' : '', $markup2); } } return $markup; }
/** * 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; }
public function render(ElementInterface $element) { $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); } if ($element->getOption('current_user')) { $element->setValue(NULL); } $this->defineWidthElement(&$element); $elementString = $elementHelper->render($element); $labelAttributes = $element->getOption("labelAttributes"); $labelRequired = ""; if ($labelAttributes['required']) { $labelRequired = "<b class='required'>*</b>"; } 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 ($element->hasAttribute('id')) { $labelOpen = ''; $labelClose = ''; $label = $labelHelper($element); } else { $labelOpen = $labelHelper->openTag($labelAttributes); $labelClose = $labelHelper->closeTag(); } if ($label !== '' && !$element->hasAttribute('id')) { $label = '<span>' . $label . ' ' . $labelRequired . '</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 ($this->renderErrors) { $markup = $elementString . $elementErrors; } else { $markup = $elementString; } } return "<div id='{$element->getName()}'>" . $markup . "</div>"; }