public function update($class_id, Request $request, Validator $validator, Fields $fields, Field_settings $field_settings, Field_settings_default $field_settings_default, Classes $classes) { // validation request if ($v = $validator::make($request->all(), $this->updateRules($request->input('id'))) and $v->fails()) { return redirect()->back()->withInput()->withErrors($v->errors()); // errors exists } // getting class of field $class = $classes->find($class_id); // getting field $field = $fields->find((int) $request->id); // saving field data $field->setValues($request)->save(); // IF HAS NEW SHORTNAME if ($field->shortname != $request->input('old_shortname')) { // renaming schema $field->renameSchema($request->input('old_shortname'), $field->shortname, $classes->prefix, $class->shortname); } // IF HAS NEW TYPE if ($field->type_id != $request->input('old_type_id')) { // clear old settings $field_settings->clearSettings($field->id); // setup default field settings $default_settings = $field_settings_default->prepare($field->type_id); $field_settings->store($default_settings, $field->id, $class_id); // change field type $field->changeSchemaType($classes->prefix, $class->shortname, $field->shortname, $default_settings['db_field_type']['_value'], $default_settings['db_field_size']['_value']); } // saving success message \Session::flash('success', 'Successfully saved'); return \Redirect::route('admin.fields.edit', ['class_id' => $class_id, 'field_id' => $field->id]); }