'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(); $proclamatore = Proclamatore::create([ 'nome' => $this->nome, 'cognome' => $this->cognome, 'attivo' => $this->attivo, 'email' => trim($this->email) ?: null, 'telefono' => trim($this->telefono) ?: null, ]); activity()->causedBy(auth()->user()) ->performedOn($proclamatore) ->log('created'); session()->flash('success', "Proclamatore {$proclamatore->nome_completo} creato."); return $this->redirect($this->destinazione(route('proclamatori.index')), navigate: true); } public function render() { return view('livewire.proclamatori.proclamatore-form', [ 'titolo' => 'Nuovo Proclamatore', 'btnLabel' => 'Crea Proclamatore', ]); } }