optgroup è un tag html utilizzato per raggruppare le opzioni di una select box che sono correlate tra di loro.

Vediamo subito un esempio pratico in cui le province sono raggruppate per regione. La regione viene indicata come attributo label di optgroup.

<select name="province">

<optgroup label="Sardegna">
    <option value="CA">CA</option>
    <option value="CI">Carbonia-Iglesias</option>
    <option value="NU">Nuoro</option>
    <option value="OT">Olbia-Tempio</option>
    <option value="OR">Oristano</option>
    <option value="VS">Medio Campidano</option>
    <option value="OG">Ogliastra</option>
    <option value="SS">Sassari</option>
</optgroup>

<optgroup label="Sicilia">
    <option value="AG">Agrigento</option>
    <option value="CL">Caltanissetta</option>
    <option value="CT">Catania</option>
    <option value="EN">Enna</option>
    <option value="ME">Messina</option>
    <option value="PA">Palermo</option>
    <option value="RG">Ragusa</option>
    <option value="SR">Siracusa</option>
    <option value="TP">Trapani</option>
</optgroup>

</select>

Puoi cliccare qua sotto per vedere il risultato.

CACarbonia-IglesiasNuoroOlbia-TempioOristanoMedio CampidanoOgliastraSassari

AgrigentoCaltanissettaCataniaEnnaMessinaPalermoRagusaSiracusaTrapani

 

Come creare la select box su Laravel

Per ottenere lo stesso risultato attraverso l’helper Form è necessario organizzare correttamente i dati all’interno di un array. Ecco un esempio dei file routes.php e form.blade.php.

//route.php
Route::get( '/form', function()
{
	$data[ 'province' ] = array(

		'Sardegna' => array(
				    'CA' => 'Cagliari',
					'CI' => 'Carbonia-Iglesias',
					'NU' => 'Nuoro',
					'OT' => 'Olbia-Tempio',
					'OR' => 'Oristano',
					'VS' => 'Medio Campidano',
					'OG' => 'Ogliastra',
					'SS' => 'Sassari'
			),
		'Sicilia' => array(
					'AG' => 'Agrigento',
					'CL' => 'Caltanissetta',
					'CT' => 'Catania',
					'EN' => 'Enna',
					'ME' => 'Messina',
					'PA' => 'Palermo',
					'RG' => 'Ragusa',
					'SR' => 'Siracusa',
					'TP' => 'Trapani'
			),
	);
	return View::make( 'form', $data );
} );
// form.blade.php
{{ Form::open(array('url'=>'dati-form')) }}

   {{ Form::label( 'provincia' , 'Provincia') }}<br />
   {{ Form::select( 'provincia' , $province , '' , array('class' => 'campo-province')) }}

{{ Form::close() }}

  inStileWeb.com
blog comments powered by Disqus