Esempio n. 1
0
    public function __invoke(ElementInterface $element = null)
    {
        if (!empty($element->getMessages())) {
            $messages = $element->getMessages();
            return sprintf('<span class="glyphicon glyphicon-warning-sign form-control-feedback"
								data-toggle="tooltip" title="%s" ></span>', current($messages));
        }
    }
Esempio n. 2
0
 public function render(ElementInterface $element = null)
 {
     if ($element->getMessages()) {
         $element->setAttribute('class', 'error ' . $element->getAttribute('class'));
     }
     return parent::render($element);
 }
Esempio n. 3
0
 /**
  * Render validation errors for the provided $element
  *
  * @param  ElementInterface $element
  * @param  array $attributes
  * @throws Exception\DomainException
  * @return string
  */
 public function render(ElementInterface $element, array $attributes = array())
 {
     $messages = $element->getMessages();
     if (empty($messages)) {
         return '';
     }
     if (!is_array($messages) && !$messages instanceof Traversable) {
         throw new Exception\DomainException(sprintf('%s expects that $element->getMessages() will return an array or Traversable; received "%s"', __METHOD__, is_object($messages) ? get_class($messages) : gettype($messages)));
     }
     // Prepare attributes for opening tag
     $attributes = array_merge($this->attributes, $attributes);
     $attributes = $this->createAttributesString($attributes);
     if (!empty($attributes)) {
         $attributes = ' ' . $attributes;
     }
     // Flatten message array
     $escapeHtml = $this->getEscapeHtmlHelper();
     $messagesToPrint = array();
     $self = $this;
     array_walk_recursive($messages, function ($item) use(&$messagesToPrint, $escapeHtml, $self) {
         if (null !== ($translator = $self->getTranslator())) {
             $item = $translator->translate($item, $self->getTranslatorTextDomain());
         }
         $messagesToPrint[] = $escapeHtml($item);
     });
     if (empty($messagesToPrint)) {
         return '';
     }
     // Generate markup
     $markup = sprintf($this->getMessageOpenFormat(), $attributes);
     $markup .= implode($this->getMessageSeparatorString(), $messagesToPrint);
     $markup .= $this->getMessageCloseString();
     return $markup;
 }
Esempio n. 4
0
 /**
  * Render CSS class for the provided $element
  *
  * @param  ElementInterface $element
  * @param  array $attributes
  * @throws Exception\DomainException
  * @return string
  */
 public function render(ElementInterface $element, array $attributes = array())
 {
     $messages = $element->getMessages();
     if (empty($messages)) {
         return self::CLASS_NO_ERRORS;
     }
     return ' ' . self::CLASS_HAS_ERRORS;
 }
 /**
  * render
  *
  * Render the view helper as a HTML string.
  *
  * @param  ElementInterface  $element  The form element that should be rendered.
  * @param  array             $options  Optional view helper options.
  *
  * @return string
  */
 public function render(ElementInterface $element, array $options = [])
 {
     $messages = $element->getMessages();
     if (!empty($messages)) {
         $this->setAttribute('class', array_merge($this->getAttribute('class', []), ['has-error']));
     }
     return parent::render($element, $options);
 }
Esempio n. 6
0
    public function __invoke(ElementInterface $element = null)
    {
        $messages = $element->getMessages();
        if (empty($messages)) {
            return '';
        }
        return sprintf('<div id="cph_Main_ctl00_notification_rptNotice_divMessage_0" class="alert">%s<button data-dismiss="alert" class="close">×</button>
	            </div>', current($messages));
    }
 /**
  * Returns the control group open tag
  * @param ElementInterface $element
  * @return string
  */
 public function openTag(ElementInterface $element)
 {
     $class = 'control-group';
     if ($element->getMessages()) {
         $class .= ' error';
     }
     $html = '<div class="' . $class . '">';
     return $html;
 }
Esempio n. 8
0
 public function __invoke(ElementInterface $elements = null)
 {
     if (empty($elements)) {
         return "";
     }
     $message = $elements->getMessages();
     return sprintf('<span class="error help-inline">
   						%s
   					</span>', current($message));
 }
Esempio n. 9
0
 /**
  * {@inheritDoc}
  */
 public function render(ElementInterface $element, array $attributes = [])
 {
     $markup = '';
     $renderer = $this->getView();
     if (!method_exists($renderer, 'plugin')) {
         return $markup;
     }
     /* @var $flashMessenger \Zend\View\Helper\FlashMessenger */
     $flashMessenger = $renderer->plugin('flashmessenger');
     if ($flashMessenger->hasCurrentMessages() || $element->getMessages()) {
         $formName = $element->getName();
         foreach ($this->classMessages as $namespace => $class) {
             $attribs = $attributes;
             if ($namespace === PluginFlashMessenger::NAMESPACE_ERROR) {
                 $flashMessenger->setTranslatorTextDomain($this->getTranslatorTextDomain());
                 if (!$this->getMessageOpenFormat()) {
                     $this->setMessageOpenFormat($flashMessenger->getMessageOpenFormat());
                 }
                 if (!$this->getMessageSeparatorString()) {
                     $this->setMessageSeparatorString($flashMessenger->getMessageSeparatorString());
                 }
                 if (!$this->getMessageCloseString()) {
                     $this->setMessageCloseString($flashMessenger->getMessageCloseString());
                 }
                 if ($flashMessenger->hasCurrentMessages() && ($messages = $flashMessenger->getCurrentMessagesFromNamespace("{$formName}-{$namespace}"))) {
                     $element->setMessages(array_merge($element->getMessages(), $messages));
                 }
                 if (isset($attribs['class'])) {
                     $attribs['class'] .= ' ' . $class;
                 } else {
                     $attribs['class'] = $class;
                 }
                 $markup .= parent::render($element, $attribs);
             } elseif ($flashMessenger->hasCurrentMessages()) {
                 if (isset($attribs['class'])) {
                     $class = array_merge((array) $attribs['class'], (array) $class);
                 }
                 $markup .= $flashMessenger->renderCurrent("{$formName}-{$namespace}", (array) $class);
             }
         }
     }
     return $markup;
 }
 /**
  * Returns the control group open tag
  * @param ElementInterface $element
  * @return string
  */
 public function openTag(ElementInterface $element)
 {
     $class = 'control-group';
     $id = 'cgroup-' . $element->getName();
     if ($element->getMessages()) {
         $class .= ' error';
     }
     $html = sprintf('<div class="%s" id="%s">', $class, $id);
     return $html;
 }
 /**
  * render
  *
  * Allow the view helper to be callable.
  *
  * @param ElementInterface  $element  The element which contains the error messages.
  * @param array             $options  Optional view helper options.
  *
  * @return string|$this
  */
 public function render(ElementInterface $element, array $options)
 {
     if (!empty($options)) {
         $this->setOptions($options);
     }
     $html = '';
     foreach ($element->getMessages() as $type => $message) {
         $html .= $this->renderMessage($message, $type);
     }
     return $html;
 }
Esempio n. 12
0
 /**
  * Helper method. Checks whether $element has error.
  *
  * @param ElementInterface $element
  * @param FormInterface $form
  * @return bool
  */
 protected function isElementHasError(ElementInterface $element, FormInterface $form)
 {
     if ($element->getMessages()) {
         return true;
     }
     $elementName = $this->normalizeElementName($element->getName());
     $elements = $this->getInvalidFieldsetElements($element, $form);
     if (isset($elements[$elementName]) && $elements[$elementName] === $element) {
         return true;
     }
     return false;
 }
 /**
  * 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;
 }
Esempio n. 14
0
 /**
  *
  * @see FormRow::render()
  * @param ElementInterface $oElement        	
  * @return string
  */
 public function render(ElementInterface $oElement, $labelPosition = null)
 {
     $sElementType = $oElement->getAttribute('type');
     // Nothing to do for hidden elements which have no messages
     if ($sElementType === 'hidden' && !$oElement->getMessages()) {
         return parent::render($oElement);
     }
     // Retrieve expected layout
     $sLayout = $oElement->getOption('layout');
     // Partial rendering
     if ($this->partial) {
         return $this->view->render($this->partial, array('element' => $oElement, 'label' => $this->renderLabel($oElement), 'labelAttributes' => $this->labelAttributes, 'labelPosition' => $this->labelPosition, 'renderErrors' => $this->renderErrors));
     }
     $sRowClass = '';
     if (($fgs = $oElement->getOption('form-group-size')) != false) {
         $sRowClass = $fgs;
     }
     // Validation state
     if (($sValidationState = $oElement->getOption('validation-state')) != false) {
         $sRowClass .= ' has-' . $sValidationState;
     }
     // "has-error" validation state case
     if ($oElement->getMessages()) {
         $sRowClass .= ' has-error';
         // Element have errors
         if (($sInputErrorClass = $this->getInputErrorClass()) != false) {
             if (($sElementClass = $oElement->getAttribute('class')) != false) {
                 if (!preg_match('/(\\s|^)' . preg_quote($sInputErrorClass, '/') . '(\\s|$)/', $sElementClass)) {
                     $oElement->setAttribute('class', trim($sElementClass . ' ' . $sInputErrorClass));
                 }
             } else {
                 $oElement->setAttribute('class', $sInputErrorClass);
             }
         }
     }
     // Column size
     if (($sColumSize = $oElement->getOption('column-size')) && $sLayout !== LeadFilterForm::LAYOUT_HORIZONTAL) {
         $sRowClass .= ' col-' . $sColumSize;
     }
     // Render element
     $sElementContent = $this->renderElement($oElement);
     // Render form row
     if ($sElementType === 'checkbox' && $sLayout !== LeadFilterForm::LAYOUT_HORIZONTAL) {
         return $sElementContent . PHP_EOL;
     }
     if (($sElementType === 'submit' || $sElementType === 'button' || $sElementType === 'reset') && $sLayout === LeadFilterForm::LAYOUT_INLINE) {
         return $sElementContent . PHP_EOL;
     }
     return sprintf(self::$formGroupFormat, $sRowClass, $sElementContent) . PHP_EOL;
 }
Esempio n. 15
0
 /**
  * @param ElementInterface $element
  * @param boolean          $block
  *
  * @return null|string
  */
 public function __invoke(ElementInterface $element, $block = false)
 {
     $messages = $element->getMessages();
     if (empty($messages)) {
         return null;
     }
     $errors = array();
     foreach ($messages as $message) {
         $error = new HtmlElement('span');
         $error->addClass($block ? 'help-block' : 'help-inline');
         $error->setContent($this->translate((string) $message));
         $errors[] = $error;
     }
     return implode(PHP_EOL, $errors);
 }
Esempio n. 16
0
    public function render(ElementInterface $element)
    {
        $inputErrorClass = '';

        // Does this element have errors ?
        if (count($element->getMessages()) > 0) {
            $inputErrorClass = ' has-error';
        }

        $type = $element->getAttribute('type');

        if ($type != 'checkbox') {
            return '<div class="form-group' . $inputErrorClass . '">' . parent::render($element) . '</div>';
        }

        $prefix = '<div class="form-group' . $inputErrorClass . '"><div class="col-sm-offset-2 col-sm-5"><div class="checkbox">';

        $postfix = '</div></div></div>';

        return $prefix . parent::render($element) . $postfix;
    }
 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;
 }
Esempio n. 18
0
 /**
  * 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;
 }
Esempio n. 19
0
 /**
  * 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;
 }
Esempio n. 20
0
 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;
 }
Esempio n. 21
0
 /**
  * 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') {
         $labelAttributes = array();
         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 {
             if ($label !== '' && !$element->hasAttribute('id') || $element instanceof LabelAwareInterface && $element->getLabelOption('always_wrap')) {
                 $label = '<label>' . $label . '</label>';
             }
             // Button element is a special case, because label is always rendered inside it
             if ($element instanceof Button || $element instanceof Checkbox || $element instanceof Radio) {
                 $label = '';
             }
             $markup = $label . $elementString;
         }
     } else {
         $markup = $elementString;
     }
     return $rowOpen . $markup . $rowClose;
 }
Esempio n. 22
0
 /**
  * @param ElementInterface $oElement
  * @return string
  */
 public function getRowClassFromElement(\Zend\Form\ElementInterface $oElement)
 {
     $sRowClass = '';
     if ($sFormGroupSize = $oElement->getOption('bootstrap-form-group-size')) {
         $sRowClass = $sFormGroupSize;
     }
     // Validation state
     if ($sValidationState = $oElement->getOption('validation-state')) {
         $sRowClass .= ' has-' . $sValidationState;
     }
     if ($oElement->getMessages()) {
         $sRowClass .= ' has-error';
     }
     // Column size
     if (($sColumSize = $oElement->getOption('column-size')) && $oElement->getOption('bootstrap-layout') !== Form::LAYOUT_HORIZONTAL) {
         $sRowClass .= ' col-' . $sColumSize;
     }
     return $sRowClass;
 }
Esempio n. 23
0
 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;
 }
Esempio n. 24
0
 /**
  * Render errors.
  *
  * @param ElementInterface $element
  *
  * @return null|\SxBootstrap\View\Helper\Bootstrap\Form\Errors
  */
 protected function renderError(ElementInterface $element)
 {
     $messages = $element->getMessages();
     if (empty($messages)) {
         return null;
     }
     $errorPlugin = $this->getView()->plugin('sxb_form_errors');
     return $errorPlugin($element);
 }
Esempio n. 25
0
 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 . '&nbsp;' . $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>";
 }