locales = config('system.locales', []); $this->timezones = config('system.timezones', []); // prefill from settings $this->locale = \App\Models\Setting::get('system.locale', 'de'); $this->timezone = \App\Models\Setting::get('system.timezone', 'Europe/Berlin'); $this->session_timeout= (int)\App\Models\Setting::get('system.session_timeout', 120); } protected function rules(): array { return [ 'locale' => ['required', Rule::in(collect($this->locales)->pluck('value')->all())], 'timezone' => ['required', Rule::in($this->timezones)], 'session_timeout' => ['required','integer','min:5','max:1440'], ]; } public function save(): void { $this->validate(); \App\Models\Setting::setMany([ 'system.locale' => $this->locale, 'system.timezone' => $this->timezone, 'system.session_timeout' => $this->session_timeout, ]); // TODO: persist to settings storage (DB/Config) // e.g. Settings::set('app.locale', $this->locale); // Settings::set('app.timezone', $this->timezone); // Settings::set('session.timeout', $this->session_timeout); $this->dispatch('toast', type: 'done', badge: 'Einstellungen', title: 'Gespeichert', text: 'Die allgemeinen Einstellungen wurden erfolgreich gespeichert.', duration: 6000, ); // $this->dispatch('toast', body: 'Einstellungen gespeichert.'); } public function render() { return view('livewire.ui.system.general-form'); } }