settings = $settings; } /** * Get overview (with form) for editing settings * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function getOverview() { $sections = App::make('registerSettingsExtension') ->get(); // load all settings with language info $settings = $this->settings->getAllWithLanguage(); return view('admin.settings.overview', [ 'formSections' => $sections, 'settings' => $settings ]); } /** * Save all settings (ignore empty ones) * * When settings used to be non-empty string and user deletes it, key is also deleted from database * * @param Requests\SaveSettingsRequest $request * * @return \Illuminate\Http\RedirectResponse */ public function saveSettings(Requests\SaveSettingsRequest $request) { $data = $request->all(); $commonSettings = isset($data['commonSettings']) ? $data['commonSettings'] : []; // remove CSRF token field unset($data['_token'], $data['commonSettings']); foreach ($data as $key => $value) { // select language for this setting key $language = isset($commonSettings[$key]) ? null : LaravelLocalization::getCurrentLocale(); $setting = SettingsModel::firstOrNew(['language' => $language, 'key' => $key]); if ($setting->value == $value) { continue; } // set value and save or delete $setting->value = $value; $setting->save(); } return redirect() ->route('settings.overview') ->with('success', trans('admin/settings.successfullySaved')); } }