コード例 #1
0
 /**
  * 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);
 }