Example #1
0
 /**
  * 从配置数组直接添加表单元素
  *
  * @param array $config
  * @param boolean $nested
  *
  * @return QForm
  */
 function loadFromConfig(array $config, $nested = false)
 {
     $validations = !empty($config['_validations']) ? (array) $config['_validations'] : array();
     unset($config['_validations']);
     $this->loadValidationsFromConfig($validations);
     if ($nested) {
         foreach ($config as $group_name => $elements) {
             $group = new QForm_Group($group_name);
             foreach ($elements as $id => $element_define) {
                 $element = new QForm_Element($id, $element_define['type'], $element_define['props']);
                 if (isset($element_define['bind_enabled'])) {
                     $element->setBindEnabled($element_define['bind_enabled']);
                 }
                 $group->add($element);
             }
             $this->add($group);
         }
     } else {
         foreach ($config as $id => $element_define) {
             $element = new QForm_Element($id, $element_define['type'], $element_define['props']);
             if (isset($element_define['bind_enabled'])) {
                 $element->setBindEnabled($element_define['bind_enabled']);
             }
             $this->add($element);
         }
     }
     return $this;
 }
Example #2
0
 /**
  * 从配置批量添加元素
  *
  * 具体用法参考开发者手册关于表单的章节。
  *
  * @param array $config
  *
  * @return QForm_Group
  */
 function loadFromConfig(array $config)
 {
     foreach ($config as $id => $attrs) {
         if (!is_array($attrs)) {
             $attrs = array();
         }
         if (!isset($this->_attrs['qform_group_id'])) {
             $this->_attrs['qform_group_id'] = "";
         }
         if (isset($attrs['_elements'])) {
             if (!isset($attrs['qform_group_id'])) {
                 $attrs['qform_group_id'] = $id;
             }
             $elements = (array) $attrs['_elements'];
             unset($attrs['_elements']);
             $group = new QForm_Group($id, $attrs, $this);
             if (!empty($elements)) {
                 $group->loadFromConfig($elements);
             }
             $this->_elements[$id] = $group;
         } else {
             if (isset($attrs['_filters'])) {
                 $filters = $attrs['_filters'];
                 unset($attrs['_filters']);
             } else {
                 $filters = null;
             }
             if (isset($attrs['_validations'])) {
                 $validations = $attrs['_validations'];
                 unset($attrs['_validations']);
             } else {
                 $validations = null;
             }
             $attrs['qform_group_id'] = $this->_attrs['qform_group_id'];
             $element = new QForm_Element($id, $attrs, $this);
             if (!empty($filters)) {
                 $element->addFilters($filters);
             }
             if (!empty($validations)) {
                 $element->addValidations($validations);
             }
             if (isset($attrs['value'])) {
                 $element->_unfiltered_value = $attrs['value'];
             }
             $this->_elements[$id] = $element;
         }
     }
     return $this;
 }