コード例 #1
0
 /**
  * Render a collection by iterating through all fieldsets and elements
  * @param \Zend\Form\ElementInterface $oElement
  * @return string
  */
 public function render(ElementInterface $oElement)
 {
     $oRenderer = $this->getView();
     if (!method_exists($oRenderer, 'plugin')) {
         return '';
     }
     $bShouldWrap = $this->shouldWrap;
     $sMarkup = '';
     $sElementLayout = $oElement->getOption('bootstrap-layout');
     if ($oElement instanceof \IteratorAggregate) {
         $oElementHelper = $this->getElementHelper();
         $oFieldsetHelper = $this->getFieldsetHelper();
         foreach ($oElement->getIterator() as $oElementOrFieldset) {
             $aOptions = $oElementOrFieldset->getOptions();
             if ($sElementLayout && empty($aOptions['bootstrap-layout'])) {
                 $aOptions['bootstrap-layout'] = $sElementLayout;
                 $oElementOrFieldset->setOptions($aOptions);
             }
             if ($oElementOrFieldset instanceof \Zend\Form\FieldsetInterface) {
                 $sMarkup .= $oFieldsetHelper($oElementOrFieldset);
             } elseif ($oElementOrFieldset instanceof \Zend\Form\ElementInterface) {
                 if ($oElementOrFieldset->getOption('bootstrap-row-open')) {
                     $sMarkup .= '<div class="row">' . PHP_EOL;
                 }
                 $sMarkup .= $oElementHelper($oElementOrFieldset);
                 if ($oElementOrFieldset->getOption('bootstrap-row-close')) {
                     $sMarkup .= '</div>' . PHP_EOL;
                 }
             }
         }
         if ($oElement instanceof \Zend\Form\Element\Collection && $oElement->shouldCreateTemplate()) {
             $sMarkup .= $this->renderTemplate($oElement);
         }
     }
     if ($bShouldWrap) {
         if (false != ($sLabel = $oElement->getLabel())) {
             if (null !== ($oTranslator = $this->getTranslator())) {
                 $sLabel = $oTranslator->translate($sLabel, $this->getTranslatorTextDomain());
             }
             $sMarkup = sprintf(self::$legendFormat, ($sAttributes = $this->createAttributesString($oElement->getLabelAttributes() ?: array())) ? ' ' . $sAttributes : '', $this->getEscapeHtmlHelper()->__invoke($sLabel)) . $sMarkup;
         }
         //Set form layout class
         if ($sElementLayout) {
             $sLayoutClass = 'form-' . $sElementLayout;
             if (false != ($sElementClass = $oElement->getAttribute('class'))) {
                 if (!preg_match('/(\\s|^)' . preg_quote($sLayoutClass, '/') . '(\\s|$)/', $sElementClass)) {
                     $oElement->setAttribute('class', trim($sElementClass . ' ' . $sLayoutClass));
                 }
             } else {
                 $oElement->setAttribute('class', $sLayoutClass);
             }
         }
         $sMarkup = sprintf(self::$fieldsetFormat, ($sAttributes = $this->createAttributesString($oElement->getAttributes())) ? ' ' . $sAttributes : '', $sMarkup);
     }
     return $sMarkup;
 }
コード例 #2
0
 public function render(\Zend\Form\ElementInterface $oElement)
 {
     if ($oElement->getOption('value_only') === true && $oElement instanceof \IteratorAggregate) {
         foreach ($oElement->getIterator() as $oElementOrFieldset) {
             $oElementOrFieldset->setOption('value_only', true);
             if ($oElement->getOption('add_hidden')) {
                 $oElementOrFieldset->setOption('add_hidden', true);
             }
         }
     }
     return parent::render($oElement);
 }
コード例 #3
0
ファイル: FormCollection.php プロジェクト: skpd/bootstrap
 public function render(ElementInterface $element, $allowRemove = false)
 {
     $renderer = $this->getView();
     if (!method_exists($renderer, 'plugin')) {
         // Bail early if renderer is not pluggable
         return '';
     }
     $markup = '';
     $addButton = '';
     $removeButton = '';
     $escapeHtmlHelper = $this->getEscapeHtmlHelper();
     $elementHelper = $this->getElementHelper();
     $fieldsetHelper = $this->getFieldsetHelper();
     foreach ($element->getIterator() as $elementOrFieldset) {
         if ($elementOrFieldset instanceof FieldsetInterface) {
             if ($fieldsetHelper instanceof $this && $element instanceof Collection) {
                 $markup .= $fieldsetHelper($elementOrFieldset, $element->allowRemove());
             } else {
                 $markup .= $fieldsetHelper($elementOrFieldset);
             }
         } elseif ($elementOrFieldset instanceof ElementInterface) {
             $markup .= $elementHelper($elementOrFieldset);
         }
     }
     // If $templateMarkup is not empty, use it for simplify adding new element in JavaScript
     if ($element instanceof CollectionElement && $element->shouldCreateTemplate()) {
         $markup .= $this->renderTemplate($element);
         if ($element->allowAdd()) {
             $addButton = '<button onclick="' . str_replace('__placeholder__', $element->getTemplatePlaceholder(), $this->addButtonEvent) . '" type="button" class="close"><i class="glyphicon glyphicon-plus"></i></button>';
         }
     } elseif ($element instanceof Fieldset && $allowRemove) {
         $removeButton = sprintf($this->removeButtonMarkup, $this->removeButtonEvent, $this->removeButtonContent);
     }
     $label = $element->getLabel();
     if (!empty($label)) {
         if (null !== ($translator = $this->getTranslator())) {
             $label = $translator->translate($label, $this->getTranslatorTextDomain());
         }
         $label = $escapeHtmlHelper($label);
         $label = sprintf('<legend>%s%s%s</legend>', $label, $removeButton, $addButton);
         $wrapper = $label;
     } else {
         $wrapper = sprintf('<div class="collection-header">%s%s</div>', $removeButton, $addButton);
     }
     $markup = sprintf('<fieldset>%s%s</fieldset>', $wrapper, $markup);
     return $markup;
 }
コード例 #4
0
ファイル: FormCollection.php プロジェクト: navassouza/zf2
 /**
  * Render a collection by iterating through all fieldsets and elements
  *
  * @param  ElementInterface $element
  * @return string
  */
 public function render(ElementInterface $element)
 {
     $renderer = $this->getView();
     if (!method_exists($renderer, 'plugin')) {
         // Bail early if renderer is not pluggable
         return '';
     }
     $markup = '';
     $templateMarkup = '';
     $escapeHtmlHelper = $this->getEscapeHtmlHelper();
     $rowHelper = $this->getRowHelper();
     if ($element instanceof CollectionElement && $element->shouldCreateTemplate()) {
         $elementOrFieldset = $element->getTemplateElement();
         if ($elementOrFieldset instanceof FieldsetInterface) {
             $templateMarkup .= $this->render($elementOrFieldset);
         } elseif ($elementOrFieldset instanceof ElementInterface) {
             $templateMarkup .= $rowHelper($elementOrFieldset);
         }
     }
     foreach ($element->getIterator() as $elementOrFieldset) {
         if ($elementOrFieldset instanceof FieldsetInterface) {
             $markup .= $this->render($elementOrFieldset);
         } elseif ($elementOrFieldset instanceof ElementInterface) {
             $markup .= $rowHelper($elementOrFieldset);
         }
     }
     // If $templateMarkup is not empty, use it for simplify adding new element in JavaScript
     if (!empty($templateMarkup)) {
         $escapeHtmlAttribHelper = $this->getEscapeHtmlAttrHelper();
         $markup .= sprintf('<span data-template="%s"></span>', $escapeHtmlAttribHelper($templateMarkup));
     }
     // Every collection is wrapped by a fieldset if needed
     if ($this->shouldWrap) {
         $label = $element->getLabel();
         if (!empty($label)) {
             $label = $escapeHtmlHelper($label);
             $markup = sprintf('<fieldset><legend>%s</legend>%s</fieldset>', $label, $markup);
         }
     }
     return $markup;
 }
コード例 #5
0
 /**
  * @inheritdoc
  */
 public function __invoke(ElementInterface $fieldset = null, $labelPosition = null)
 {
     if (!$fieldset) {
         return $this;
     }
     $wrapper = '';
     if ($this->count === 1) {
         $wrapper .= ' <div class="row">';
     }
     $label = '<h2>' . $fieldset->getName() . '</h2>';
     $wrapper .= '<div class="col-md-' . $this->columnWidth . '">' . $label . '%s</div>';
     if ($this->count === 6) {
         $wrapper .= '</div>';
         $this->count = 0;
     }
     $this->count = $this->count + 1;
     $content = '';
     foreach ($fieldset->getIterator() as $item) {
         $content .= $this->getView()->formRow($item);
     }
     return sprintf($wrapper, $content);
 }
コード例 #6
0
ファイル: FormFieldset.php プロジェクト: Andyyang1981/pi
 /**
  * Render a fieldset by iterating through all fieldsets and elements
  *
  * @param  ElementInterface $element
  * @return string
  */
 public function render(ElementInterface $element)
 {
     $renderer = $this->getView();
     if (!method_exists($renderer, 'plugin')) {
         // Bail early if renderer is not pluggable
         return '';
     }
     $markup = '';
     $escapeHtmlHelper = $this->getEscapeHtmlHelper();
     $rowHelper = $this->getRowHelper();
     foreach ($element->getIterator() as $elementOrFieldset) {
         if ($elementOrFieldset instanceof FieldsetInterface) {
             $markup .= $this->render($elementOrFieldset);
         } elseif ($elementOrFieldset instanceof ElementInterface) {
             $markup .= $rowHelper($elementOrFieldset);
         }
     }
     // Every collection is wrapped by a fieldset if needed
     if ($this->shouldWrap) {
         $label = $element->getLabel();
         if (!empty($label)) {
             $label = $escapeHtmlHelper($label);
             $markup = sprintf('<fieldset><legend>%s</legend>%s</fieldset>', $label, $markup);
         }
     }
     return $markup;
 }