user()->can('tetapan.urus'), 403); $settings = AppSetting::orderBy('group')->orderBy('key')->get()->groupBy('group'); return view('settings.edit', compact('settings')); } public function update(Request $request) { abort_unless(auth()->user()->can('tetapan.urus'), 403); $values = $request->input('settings', []); // Proses setiap tetapan. Kotak semak (boolean) yang tidak ditanda tidak // dihantar oleh borang, jadi tetapan boolean dikendalikan secara eksplisit. foreach (AppSetting::all() as $setting) { if ($setting->type === 'boolean') { $value = $request->boolean("settings.{$setting->key}") ? '1' : '0'; } elseif (array_key_exists($setting->key, $values)) { $value = $values[$setting->key]; } else { continue; } AppSetting::set($setting->key, $value); } activity('tetapan')->causedBy(auth()->user())->log('Tetapan aplikasi dikemas kini'); return back()->with('success', 'Tetapan aplikasi disimpan.'); } }