Table of Contents
Questions & Feedback
Found a typo or an error?
Want to improve this document? Edit it.
Need support or have a technical question?
Post to the user mailing-list.
Master Symfony2 fundamentals
Symfony hosting done right
Discover the SensioLabs Support
Tipo di campo choice
Tipo di campo choice¶
Un campo multi-funzione, usato per consentire all'utente di scegliere una o più opzioni.
Può essere reso come tag select, bottone radio o checkbox.
Per usare questo campo, bisogna specificare l'opzione choice_list oppure l'opzione
choices.
| Reso come | può essere vari tag (vedere sotto) |
| Opzioni | |
| Opzioni ereditate | |
| Tipo genitore | form (con expanded), altrimenti field |
| Classe | ChoiceType |
Esempio di utilizzo¶
Il modo più facile per usare questo campo è specificare le scelte direttamente con
l'opzione choices. La chiave dell'array diventa il valore effettivamente impostato
nel proprio oggetto (p.e. m), mentre il valore è quello che l'utente vede nel
form (p.e. Maschio).
1 2 3 4 | $builder->add('gender', 'choice', array(
'choices' => array('m' => 'Maschio', 'f' => 'Femmina'),
'required' => false,
));
|
Impostando multiple a true, si consente all'utente la scelta di più valori.
Il widget sarà reso come un un tag select con opzione mutliple oppure come una
serie di checkbox, a seconda dell'opzione expanded:
1 2 3 4 5 6 7 8 | $builder->add('availability', 'choice', array(
'choices' => array(
'morning' => 'Mattina',
'afternoon' => 'Pomeriggio',
'evening' => 'Sera',
),
'multiple' => true,
));
|
Si può anche usare l'opzione choice_list, che accetta un oggetto che può specificare
le scelte per il widget.
Tag select, checkbox o bottoni radio¶
Questo campo può essere reso come uno tra diversi campi HTML, a seconda
delle opzioni expanded e multiple:
| tipo di elemento | expanded | multiple |
|---|---|---|
| tag select | false | false |
tag select (con attributo multiple) |
false | true |
| bottoni radio | true | false |
| checkbox | true | true |
Opzioni del campo¶
choices¶
tipo: array predefinito: array()
Questo è il modo più semplice per specificare le scelte da usare per
questo campo. L'opzione choices è un array, in cui le chiavi sono il valore
dell'oggetto e i valori sono l'etichetta:
1 2 3 | $builder->add('gender', 'choice', array(
'choices' => array('m' => 'Maschio', 'f' => 'Femmina')
));
|
choice_list¶
tipo: Symfony\Component\Form\Extension\Core\ChoiceList\ChoiceListInterface
Questo è un modo per specificare le opzioni da usare per questo campo.
L'opzione choice_list deve essere un'istanza di ChoiceListInterface.
Per classi avanzate, si può creare una classe personalizzata che implementi
questa interfaccia e fornisca le scelte.
multiple¶
tipo: booleano predefinito: false
Se true, l'utente potra selezionare più opzioni (invece di sceglierne una
sola). A seconda del valore dell'opzione expanded,
sarà reso o come un tag select o come dei checkbox, se true, e come un tag
select o bottoni radio, se false. Il valore restituito sarà un array.
expanded¶
tipo: booleano predefinito: false
Se true, saranno resi dei bottoni radio o dei checkbox (a seconda del
valore di multiple). Se false, sarà reso un elemento select.
preferred_choices¶
tipo: array predefinito: array()
Se questa opzione viene specificata, un sotto-insieme di tutte le opzioni sarà spostato in cima al select. Il codice seguente sposterà l'opzione "Paperino" in cima, con un separatore visuale tra essa e le opzioni restanti:
1 2 3 4 | $builder->add('scelte_pippo', 'choice', array(
'choices' => array('pippo' => 'Pippo', 'pluto' => 'Pluto', 'paperino' => 'Paperino'),
'preferred_choices' => array('paperino'),
));
|
Si noti che le scelte preferite hanno senso solo con la resa di un elemento select
(cioè se expanded è false). Le scelte preferite e le scelte normali sono
separate visivamente da una serie di righe (-------------------).
Il separatore può essere personalizzato durante la resa:
- Twig
1
{{ form_widget(form.scelte_pippo, { 'separator': '=====' }) }}
- PHP
1
<?php echo $view['form']->widget($form['scelte_pippo'], array('separator' => '=====')) ?>
empty_value¶
tipo: stringa o booleano
Questa opzione determina se apparirà o meno una speciale opzione vuota (p.e. "Scegliere
un'opzione") in cima al select. Questa opzione si applica solamente se entrambe le
opzioni expanded e multiple sono impstate a false.
Aggiungere un valore vuoto con "Scegliere un'opzione" come testo:
1 2 3
$builder->add('states', 'choice', array( 'empty_value' => 'Scegliere un\'opzione', ));
Non mostrare alcun valore vuoto:
1 2 3
$builder->add('states', 'choice', array( 'empty_value' => false, ));
Se non si imposta l'opzione empty_value, sarà aggiunta automaticamente
un'opzione vuota (senza testo), ma solo se l'opzione required è
false:
1 2 3 4 | // sarà aggiunta un'opzione vuota (senza testo)
$builder->add('states', 'choice', array(
'required' => false,
));
|
empty_data¶
tipo: mixed predefinito: array() se multiple o expanded, '' altrimenti
Questa opzione determina il valore restituito dal campo quando viene selezionato
empty_value.
Per esempio, se si vuole che il campo gender sia impostato a null quando non
viene scelto alcun valore, lo si può fare in questo modo:
1 2 3 4 5 6 7 8 9 | $builder->add('gender', 'choice', array(
'choices' => array(
'm' => 'Maschio',
'f' => 'Femmina'
),
'required' => false,
'empty_value' => 'Scegliere un genere',
'empty_data' => null
));
|
by_reference¶
tipo: Booleano predefinito: true
Se il valore sottostante a un campo è un oggetto e questa opzione è
true, l'oggetto risultante non sarà effettivamente impostato al bind del
form. Per esempio, se si ha un campo author nell'oggetto sottostante,
istanza di una classe Author, allora se by_reference è
false, l'oggetto Author sarà aggiornato con i dati sottostanti,
ma setAuthor non sarà effettivamente richiamata sull'oggetto principale. Poiché
l'oggetto Author è un riferimento, questo fa veramente differenza solo se si ha
nel metodo setAuthor una logica personalizzata, che si vuol essere sicuri
sia eseguita. In questo caso, impostare questa opzione a false.
Opzioni ereditate¶
Queste opzioni sono ereditate dal tipo field:
required¶
tipo: booleano predefinito: true
Se true, sarà reso un attributo required HTML5. La label corrispondente
sarà anche resa con una classe required.
L'attributo è indipendente dalla validazione del form. Nel caso migliore, se si lascia che Symfony indovini il tipo di campo, il valore di questa opzione sarà indovinato dalle informazioni di validazione.
label¶
tipo: stringa predefinito: "indovinato" dal nome del campo
Imposta la label usata per la resa del campo. La label può anche essere inserita direttamente all'interno del template:
1 | {{ form_label(form.name, 'Il tuo nome') }}
|
read_only¶
tipo: booleano predefinito: false
Se questa opzione è true, il campo sarà reso con l'attributo disabled,
in modo che il campo non sia modificabile.
disabled¶
New in version 2.1: L'opzione disabled è stata aggiunta nella versione 2.1
type: booleano default: false
Se non si vuole che l'utente modifichi il valore di un campo, si può impostare
questa opzione a true. Ogni valore inserito sarà ignorato.
error_bubbling¶
tipo: booleano predefinito: false
Se true, qualsiasi errore per questo campo sarà passato al campo genitore o al
form. Per esempio, se impostato a true su un campo normale, qualsiasi errore per
il campo sarà collegato al form principale, non al campo stesso.





is a trademark of Fabien Potencier. All rights reserved.