Example #1
0
 public static function createFromConfig($config, $data = [], $errors = [])
 {
     $form = new Form($data, $errors);
     if (isset($config['fields'])) {
         if (isset($config['defaults']) && isset($config['defaults']['fields'])) {
             $field_defaults = $config['defaults']['fields'] + self::$fieldsDefaults;
         } else {
             $field_defaults = self::$fieldsDefaults;
         }
         foreach ($config['fields'] as $key => $fc) {
             if (!isset($fc['name'])) {
                 trigger_error('Skipping index "' . $key . '". No name attibute.', E_USER_WARNING);
                 continue;
             }
             extract(self::parseDynamicValues(array_replace_recursive($field_defaults, $fc)));
             if (!isset($data[$name]) && !is_null($default)) {
                 $data[$name] = $default;
             }
             if ($required) {
                 $attributes["required"] = "required";
             }
             $field = $form->addField($type, $name, $label, $choices, $group, $attributes, $container_attributes, $html);
         }
         $form->setData($data);
         if (isset($config['layout'])) {
             $form->setGroupLayout($config['layout']);
         }
         if (isset($config['groups'])) {
             foreach ($config['groups'] as $groupname => $groupconfig) {
                 $groupconfig = array_replace_recursive(self::$groupsDefaults, $groupconfig);
                 $form->defineGroup($groupname, $groupconfig['label'], $groupconfig['attributes']);
             }
         }
     }
     return $form;
 }