Tipo di campo integer

Rende un campo input per un numero. Di base, è un campo testo che va bene per gestire dati che siano in forma di interi. Il campo number appare come una casella di testo, ma con alcune funzionalità aggiuntive, a patto che il browser dell’utente supporti HTML5.

Questo campo ha diverse opzioni su come gestire i valori ricevuti che non siano interi. Per impostazione predefinita, tutti i valori non interi (p.e. 6.78) saranno arrotondati per difetto (p.e. 6).

Reso come campo input text
Opzioni
Opzioni ereditate
Tipo genitore form
Classe Symfony\Component\Form\Extension\Core\Type\IntegerType

Opzioni del campo

grouping

tipo: intero predefinito: false

Questo valore è usato intermante come valore NumberFormatter::GROUPING_USED quando si usa la classe NumberFormatter. Non è documentato, ma pare che se lo si imposta a true, i numeri saranno raggruppati con una virgola o un punto (a seconda del locale): 12345.123 sarebbe mostrato come 12,345.123.

precision

tipo: intero predefinito: dipende dal locale (di solito intorno a 3)

Specifica quanti decimali saranno consentiti prima che il campo arrotondi il valore inserito (tramite rounding_mode). Per esempio, se precision è impostato a 2, un valore inserito di 20.123 sarà arrotondato, per esempio, a 20.12 (a seconda di rounding_mode).

rounding_mode

tipo: intero predefinito: IntegerToLocalizedStringTransformer::ROUND_DOWN

Per impostazione predefinita, se l’utente inserisce un numero non intero, sarà arrotondato per difetto. Ci sono molti altri metodi di arrotondamento e ognuno è una costante di Symfony\Component\Form\Extension\Core\DataTransformer\IntegerToLocalizedStringTransformer:

  • IntegerToLocalizedStringTransformer::ROUND_DOWN Arrotondamento verso lo zero.
  • IntegerToLocalizedStringTransformer::ROUND_FLOOR Arrotondamento verso meno infinito.
  • IntegerToLocalizedStringTransformer::ROUND_UP Arrotondamento verso l’alto.
  • IntegerToLocalizedStringTransformer::ROUND_CEILING Arrotondamento verso infinito.
  • IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN Arrotondamento verso il numero più vicino. In caso di equidistanza, arrotondamento verso il basso.
  • IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN Arrotondamento verso il numero più vicino. In caso di equidistanza, arrotondamento verso il numero pari più vicino.
  • IntegerToLocalizedStringTransformer::ROUND_HALF_UP Arrotondamento verso il numero più vicino. In caso di equidistanza, arrotondamento verso l’alto.

Opzioni ereditate

Queste opzioni sono ereditate dal tipo form:

data

tipo: mixed predefinito: Predefinito al campo dell’oggetto sottostante (se presente)

Quando si crea un form, ogni campo inizialmente mostra il valore della proprietà corrispondente dell’oggetto del dominio del form (se un oggetto è legato al form). Se si vuole sovrascrivere il valore iniziale per il form o solo per un singolo campo, lo si può fare con l’opzione data:

$builder->add('token', 'hidden', array(
    'data' => 'abcdef',
));

disabled

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.

empty_data

tipo: mixed

Il valore predefinito è '' (stringa vuota).

Questa opzione determina il valore restituito dal campo quando viene selezionato placeholder.

Si può personalizzare a seconda delle esigenze. 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:

$builder->add('gender', 'choice', array(
    'choices' => array(
        'm' => 'Maschio',
        'f' => 'Femmina'
    ),
    'required'    => false,
    'placeholder' => 'Scegliere un genere',
    'empty_data'  => null
));

Nota

Se si vuole impostare l’opzione empty_data per l’intera classe del form, vedere la ricetta Configurare dati vuoti per una classe Form.

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.

error_mapping

tipo: array predefinito: empty

Questa opzione consente di modificare il bersaglio di un errore di validazione.

Si immagini di avere un metodo personalizzato, di nome matchingCityAndZipCode, che valida se una città e un codice postale corrsispondano. Purtroppo non c’è un campo “matchingCityAndZipCode” nel form, quindi tutto ciò che può fare Symfony è mostrare l’errore in cima al form stesso.

Con la mappatura personalizzata degli errori, si può fare meglio: mappare l’errore al campo della città, in modo che sia mostrato accanto a esso:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'error_mapping' => array(
            'matchingCityAndZipCode' => 'city',
        ),
    ));
}

Ecco le regole per i lati destro e sinistro della mappatura:

  • I lato sinistro contiene i percorsi delle proprietà.
  • Se la validazione è generata su una proprietà o metodo di una classe, il suo percorso è semplicemente “nomeProprietà”.
  • Se la validazione è generata su un elemento di un array od oggetto ArrayAccess, il percorso è [nomeIndice].
  • Si possono costruire percorsi innestati, concatenandoli, separando le proprietà con dei punti. Per esempio: addresses[work].matchingCityAndZipCode
  • Anche il lato sinistro della mappatura accetta un punto ., che si riferisce al campo stesso. Questo significa che un errore aggiunto al campo è aggiunto invece al dato campo innnestato.
  • Il lato destro contiene semplicemente i nomi dei campi nel form.

invalid_message

tipo: stringa predefinito: This value is not valid

Questo è il messaggio di errore di validazione usato quando i dati inseriti sono determinati dalla validazione interna di un tipo di campo. Questo può accadere, per esempio, se l’utente inserire una stringa dentro un campo time che non può essere convertito in un tempo reale. Per i normali messaggi di validazione (come quando si imposta la lunghezza minima per un campo), impostare i messaggi di validazione con le proprie regole di validazione (riferimento).

invalid_message_parameters

tipo: array predefinito: array()

Impostando l’opzione invalid_message, si potrebbe aver bisogno di includere alcune variabili nella stringa. Lo si può fare aggiungendo dei segnaposto all’opzione e includendo le variabili in questa opzione:

$builder->add('un_campo', 'un_tipo', array(
    // ...
    'invalid_message'            => 'Valore inserito non valido: deve includere almeno %num% caratteri',
    'invalid_message_parameters' => array('%num%' => 6),
));

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:

{{ form_label(form.name, 'Il tuo nome') }}

label_attr

tipo: array predefinito: array()

Imposta gli attributi HTML per l’elemento <label>, che saranno usati durante la resa della label di un campo. È un array associativo con gli attributi HTML come chiavi. Questi attributi possono anche essere impostati all’interno del template:

  • Twig
    {{ form_label(form.name, 'Nome', {'label_attr': {'class': 'CUSTOM_LABEL_CLASS'}}) }}
    
  • PHP
    echo $view['form']->label(
        $form['name'],
        'Nome',
        array('class', 'CUSTOM_LABEL_CLASS')
    );
    

mapped

tipo: booleano

Se si vuole che il campo sia ignorato durante la lettura o la scrittura dell’oggetto, si può impostare l’opzione mapped a false

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.

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.