/** * Save new field * * @param array $fields * @return void */ public function save(array $fields) { $field = new Table\Fields(['group_id' => $fields['group_id'] != '----' ? (int) $fields['group_id'] : null, 'storage' => $fields['storage'], 'type' => $fields['type'], 'name' => $fields['name'], 'label' => !empty($fields['label']) ? $fields['label'] : null, 'values' => !empty($fields['values']) ? $fields['values'] : null, 'default_values' => !empty($fields['default_values']) ? $fields['default_values'] : null, 'attributes' => !empty($fields['attributes']) ? $fields['attributes'] : null, 'validators' => serialize($this->getValidators()), 'encrypt' => !empty($fields['encrypt']) ? (int) $fields['encrypt'] : 0, 'order' => !empty($fields['order']) ? (int) $fields['order'] : 0, 'required' => !empty($fields['required']) ? (int) $fields['required'] : 0, 'prepend' => (int) $fields['prepend'], 'dynamic' => (int) $fields['dynamic'], 'editor' => !empty($fields['editor']) && strpos($fields['type'], 'textarea') !== false ? $fields['editor'] : null, 'models' => serialize($this->getModels())]); $field->save(); if ($field->storage != 'eav') { $this->createFieldTable($field->name, $field->storage); } $this->data = array_merge($this->data, $field->getColumns()); }