Package Laravel per la selezione di regioni, province e comuni italiani utilizzando componenti Livewire.
composer require dariobarila/comuni-italiani
- 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
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 />
<?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>
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',
],
]
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>
È 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',
],
];
Per aggiornare i dati dei comuni con quelli più recenti dal sito ISTAT, esegui:
php artisan comuni-italiani:importa
Il package è rilasciato sotto licenza MIT. Vedere il file LICENSE per maggiori dettagli.
- Dario Barilà
- Email: [email protected]