/** * Validate and save changes. * * @return Response */ public function patchIndex(Request $request) { if (!$this->user->canAdminConfig()) { return abort(403); } $input = Input::all(); $optionGroups = OptionGroup::getSiteConfig(); $requirements = []; // From each group, foreach ($optionGroups as $optionGroup) { // From each option within each group, foreach ($optionGroup->options as $option) { if (!isset($input[$option->option_name])) { $input[$option->option_name] = null; } // Pull the validation parameter string, $requirements[$option->option_name] = $option->getValidation(); $input[$option->option_name] = $option->getSanitaryInput($input[$option->option_name]); } } // Build our validator. $validator = Validator::make($input, $requirements); if ($validator->fails()) { return redirect(Request::path())->withErrors($validator->errors()->all())->withInput(); } foreach ($optionGroups as &$optionGroup) { foreach ($optionGroup->options as &$option) { $setting = SiteSetting::firstOrNew(['option_name' => $option->option_name]); $option->option_value = $input[$option->option_name]; $setting->option_value = $input[$option->option_name]; $setting->save(); } } return $this->view(static::VIEW_CONFIG, ['groups' => $optionGroups]); }