/** * 从配置数组直接添加表单元素 * * @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; }
/** * 从配置批量添加元素 * * 具体用法参考开发者手册关于表单的章节。 * * @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; }