proclamatore = $proclamatore; $this->nome = $proclamatore->nome; $this->cognome = $proclamatore->cognome; $this->attivo = $proclamatore->attivo; $this->email = (string) $proclamatore->email; $this->telefono = (string) $proclamatore->telefono; } protected function rules(): array { return [ 'nome' => 'required|string|max:100', 'cognome' => 'required|string|max:100', 'attivo' => 'boolean', // Facoltativi: si controlla il formato solo se compilati. 'email' => 'nullable|email|max:255', 'telefono' => ['nullable', 'string', 'max:30', 'regex:/^\+?[0-9 ().\/-]{6,25}$/'], ]; } protected function messages(): array { return [ 'email.email' => "L'indirizzo email non è valido (puoi anche lasciarlo vuoto).", 'telefono.regex' => 'Il numero può contenere solo cifre, spazi e un "+" iniziale (puoi anche lasciarlo vuoto).', ]; } public function save() { $this->authorize('settings.manage'); $this->validate(); $this->proclamatore->update([ 'nome' => $this->nome, 'cognome' => $this->cognome, 'attivo' => $this->attivo, 'email' => trim($this->email) ?: null, 'telefono' => trim($this->telefono) ?: null, ]); session()->flash('success', "Proclamatore {$this->proclamatore->nome_completo} aggiornato."); return $this->redirect($this->destinazione(route('proclamatori.index')), navigate: true); } public function render() { return view('livewire.proclamatori.proclamatore-form', [ 'titolo' => "Modifica {$this->proclamatore->nome_completo}", 'btnLabel' => 'Salva Modifiche', ]); } }