public function updateFormFields(FormRequest $request) { foreach ($request->fields as $request_key => $request_value) { $field = Field::findOrNew($request_key); if (Gate::denies('hasFormAccess', $field)) { abort(403); } $field->name = $request_value['name']; $field->description = $request_value['description']; $field->type = $request_value['type']; $field->form_id = $this->id; $field->position = $request_value['position']; // Generate a blank Rules Array if needed $rules_array = !empty($request_value['rules']) ? $request_value['rules'] : array(); $rules = new FieldRules($rules_array); $field->rules = implode('|', $rules->normalize()); $field->save(); if ($field->hasOptions()) { $this->updateFieldOptions($field, $request_value['fieldOptions']); } } }