Gc\Form\AbstractForm::addContent PHP Method

addContent() public static method

Add content to form
public static addContent ( Zend\Form\Fieldset $form, mixed $elements, string $prefix = null, integer $datatypeId = null ) : void
$form Zend\Form\Fieldset Form
$elements mixed Elements
$prefix string Add belong to for each elements
$datatypeId integer Datatype id
return void
    public static function addContent(Fieldset $form, $elements, $prefix = null, $datatypeId = null)
    {
        if (empty($elements)) {
            return;
        }
        if (!empty($prefix) and $datatypeId === null) {
            $datatypeId = mt_rand();
        }
        if (is_array($elements)) {
            $return = array();
            foreach ($elements as $element) {
                $return[] = self::addContent($form, $element, $prefix, $datatypeId);
            }
            return $return;
        } elseif ($elements instanceof Element) {
            if (!empty($prefix)) {
                $id = $elements->getAttribute('id');
                if (empty($id)) {
                    $id = $elements->getAttribute('name');
                }
                $elements->setAttribute('id', $id . $datatypeId);
                $elements->setAttribute('name', $prefix . '[' . $elements->getAttribute('name') . ']');
            }
            $form->add($elements);
            return $elements;
        } elseif (is_string($elements)) {
            if (!empty($prefix)) {
                $elements = preg_replace('~name="(.+)(([|\\[).*(]|\\]))?"~iU', 'name="' . $prefix . '[$1]$2"', $elements);
                $elements = preg_replace('~name\\\\x3D\\\\x22(.+)(\\\\x5B.*\\\\x5D)?\\\\x22~iU', 'name\\\\x3D\\\\x22' . $prefix . '\\\\x5B$1\\\\x5D$2\\\\x22', $elements);
                $elements = preg_replace('~id="(.+)"~iU', 'id="${1}' . $datatypeId . '"', $elements);
                $elements = preg_replace('~for="(.+)"~iU', 'for="${1}' . $datatypeId . '"', $elements);
                $elements = preg_replace('~id\\\\x3D\\\\x22"(.+)\\\\x22~iU', 'id\\\\x3D\\\\x22${1}' . $datatypeId . '\\\\x22', $elements);
                $elements = preg_replace('~for\\\\x3D\\\\x22"(.+)\\\\x22~iU', 'for\\\\x3D\\\\x22${1}' . $datatypeId . '\\\\x22', $elements);
                $elements = preg_replace('~(?:(?!(?<=value=)))("|\')#(.+)("|\')~iU', '${1}#${2}' . $datatypeId . '${3}', $elements);
            }
            $hiddenElement = new Element('hidden' . uniqid());
            $hiddenElement->setAttribute('content', $elements);
            $form->add($hiddenElement);
            return $hiddenElement;
        } else {
            throw new Exception('Invalid element ' . __CLASS__ . '::' . __METHOD__ . ')');
        }
    }

Usage Example

Beispiel #1
0
 /**
  * Load mixed prevalue editor
  *
  * @return string
  */
 public function load()
 {
     $config = $this->getConfig();
     $listDir = $this->getDatatype()->getDatatypesList();
     $options = array();
     foreach ($listDir as $dir) {
         $options[$dir] = $dir;
     }
     $datatypes = empty($config['datatypes']) ? array() : $config['datatypes'];
     foreach ($datatypes as $datatypeId => $datatypeConfig) {
         //Get datatypes
         $object = $this->loadDatatype($datatypeConfig['name']);
         //Force configuration
         $object->getPrevalueEditor()->setConfig(empty($datatypeConfig['config']) ? null : serialize($datatypeConfig['config']));
         //Initiliaze prefix
         $prefix = 'datatypes[' . $datatypeId . ']';
         //Create form
         $fieldset = new Fieldset();
         $hidden = new Element\Hidden();
         $hidden->setName($prefix . '[name]');
         $hidden->setValue($datatypeConfig['name']);
         $fieldset->add($hidden);
         $label = new Element\Text();
         $label->setName($prefix . '[label]');
         $label->setAttribute('class', 'form-control');
         $label->setLabel('Label');
         $label->setAttribute('id', 'label' . $datatypeId);
         $label->setValue(empty($datatypeConfig['label']) ? '' : $datatypeConfig['label']);
         $fieldset->add($label);
         AbstractForm::addContent($fieldset, $object->getPrevalueEditor()->load(), $prefix);
         $datatypes[$datatypeId]['fieldset'] = $fieldset;
     }
     $data = array();
     $data['datatypes'] = $datatypes;
     $data['modelOptions'] = $options;
     return $this->addPath(__DIR__)->render('mixed-prevalue.phtml', $data);
 }
All Usage Examples Of Gc\Form\AbstractForm::addContent