public function actionEditField() { // XSS Protection $_POST = Yii::app()->input->stripClean($_POST); $id = (int) Yii::app()->request->getQuery('id'); // Get Base Field $field = ProfileField::model()->findByPk($id); if ($field == null) { $field = new ProfileField(); } // Get all Available Field Class Instances, also bind current profilefield to the type $fieldTypes = ProfileFieldType::getTypeInstances($field); // Build Form Definition $definition = array(); #$definition['activeForm'] = array( # 'class' => 'CActiveForm', # 'enableAjaxValidation' => true, # 'id' => 'login-form', #); $definition['elements'] = array(); // Add all sub forms $definition['elements'] = array_merge($definition['elements'], $field->getFormDefinition()); foreach ($fieldTypes as $fieldType) { $definition['elements'] = array_merge($definition['elements'], $fieldType->getFormDefinition()); } // Add Form Buttons $definition['buttons'] = array('save' => array('type' => 'submit', 'label' => Yii::t('AdminModule.controllers_UserprofileController', 'Save'), 'class' => 'btn btn-primary')); if (!$field->isNewRecord && !$field->is_system) { $definition['buttons']['delete'] = array('type' => 'submit', 'label' => Yii::t('AdminModule.controllers_UserprofileController', 'Delete'), 'class' => 'btn btn-danger pull-right'); } // Create Form Instance $form = new HForm($definition); // Add used models to the CForm, so we can validate it $form['ProfileField']->model = $field; foreach ($fieldTypes as $fieldType) { $form[get_class($fieldType)]->model = $fieldType; } // Form Submitted? if ($form->submitted('save') && $form->validate()) { $this->forcePostRequest(); // Use ProfileField Instance from Form with new Values $field = $form['ProfileField']->model; $fieldType = $form[$field->field_type_class]->model; $field->save(); $fieldType->save(); $this->redirect(Yii::app()->createUrl('//admin/userprofile')); } if ($form->submitted('delete')) { $this->forcePostRequest(); $field->delete(); $this->redirect(Yii::app()->createUrl('//admin/userprofile')); } $this->render('editField', array('form' => $form, 'field' => $field)); }