dariobarila / comuni-italiani
Package Laravel per la selezione di regione, provincia e comune italiani utilizzando Livewire
Requires
- php: ^8.2
- illuminate/contracts: ^11.0
- league/csv: ^9.0
- livewire/livewire: ^3.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^8.1
- orchestra/testbench: ^9.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/phpstan: ^1.10
README
Package Laravel per la selezione di regioni, province e comuni italiani utilizzando componenti Livewire.
Installazione
composer require dariobarila/comuni-italiani
Configurazione
- Pubblica le migrazioni:
php artisan vendor:publish --tag=comuni-italiani-migrations
- Pubblica il file di configurazione (opzionale):
php artisan vendor:publish --tag=comuni-italiani-config
- Esegui le migrazioni:
php artisan migrate
- Importa i dati dei comuni:
php artisan comuni-italiani:importa
Utilizzo
Componenti Livewire
Il package fornisce tre componenti Livewire che si aggiornano automaticamente in cascata:
- Selettore Regione:
<livewire:selettore-regione />
- Selettore Provincia (si aggiorna quando cambia la regione):
<livewire:selettore-provincia />
- Selettore Comune (si aggiorna quando cambia la provincia):
<livewire:selettore-comune />
Esempio di Utilizzo Completo
<?php namespace App\Livewire; use Livewire\Component; use Livewire\Attributes\On; class SelezioneComuni extends Component { public $datiRegione = []; public $datiProvincia = []; public $datiComune = []; #[On('comuni-italiani::selezione-completa')] public function selezioneDatiCompleta($data) { $this->datiRegione = $data['regione']; $this->datiProvincia = $data['provincia']; $this->datiComune = $data['comune']; } public function render() { return view('livewire.selezione-comuni'); } }
<div> <form> <livewire:selettore-regione /> <livewire:selettore-provincia /> <livewire:selettore-comune /> </form> @if(!empty($datiComune)) <h3>Selezione completa:</h3> <ul> <li>Regione: {{ $datiRegione['nome'] }}</li> <li>Provincia: {{ $datiProvincia['nome'] }} ({{ $datiProvincia['sigla'] }})</li> <li>Comune: {{ $datiComune['nome'] }}</li> </ul> @endif </div>
Eventi Livewire
Quando viene completata una selezione (cioè quando viene selezionato un comune), il package emette l'evento comuni-italiani::selezione-completa
con tutti i dati della selezione:
[ 'regione' => [ 'id' => 3, 'nome' => 'Lombardia', 'codice_istat' => '03', ], 'provincia' => [ 'id' => 15, 'nome' => 'Milano', 'sigla' => 'MI', 'codice_istat' => '015', ], 'comune' => [ 'id' => 15146, 'nome' => 'Milano', 'codice_istat' => '015146', 'codice_catastale' => 'F205', ], ]
Utilizzo in Form HTML
I componenti possono essere utilizzati anche in form HTML tradizionali. Ogni select ha un attributo name
corrispondente (regione
, provincia
, comune
):
<form method="POST" action="/salva-comune"> @csrf <livewire:selettore-regione /> <livewire:selettore-provincia /> <livewire:selettore-comune /> <button type="submit">Salva</button> </form>
Personalizzazione dello Stile
È possibile personalizzare le classi CSS dei componenti modificando il file di configurazione config/comuni-italiani.php
:
return [ 'component_classes' => [ 'select' => 'form-select', 'label' => 'form-label', 'wrapper' => 'mb-3', ], ];
Aggiornamento dei Dati
Per aggiornare i dati dei comuni con quelli più recenti dal sito ISTAT, esegui:
php artisan comuni-italiani:importa
Licenza
Il package è rilasciato sotto licenza MIT. Vedere il file LICENSE per maggiori dettagli.
Autore
- Dario Barilà
- Email: dario.barila@gmail.com