Esempio n. 1
0
 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]);
 }