Tipo di campo time

Tipo di campo time

Un campo per inserire un tempo.

Può essere reso come campo testuale, una serie di campi testuali (p.e. ora, minuto, secondo) o una serie di select. I dati sottostanti possono essere memorizzati come oggetto DateTime, stringa, timestamp o array.

Tipo di dato sottostante DateTime, stringa, timestamp o array (vedere opzione input)
Reso come può essere vari tag (vedere sotto)
Opzioni
Opzioni ridefinite
Opzioni ereditate
Tipo genitore form
Classe TimeType

Utilizzo di base

Questo tipo di campo è altamente configurabile, ma facile da usare. Le opzioni più importanti sono input e widget.

Si supponga di avere un campo startTime, il cui datp sottostante sia un oggetto DateTime. Il codice seguente configura il tipo time per il campo come tre campi di scelta separati:

1
2
3
4
$builder->add('startTime', 'time', array(
    'input'  => 'datetime',
    'widget' => 'choice',
));

L'opzione input deve essere cambiata per corrispondere al tipo di dato sottostante. Per esempio, se il campo startTime fosse un timestamp, bisognerebbe impostare input a timestamp:

1
2
3
4
$builder->add('startTime', 'time', array(
    'input'  => 'timestamp',
    'widget' => 'choice',
));

Il campo supporta anche i valori array e string per l'opzione input.

Opzioni del campo

widget

tipo: stringa predefinito: choice

Il modo di base in cui il campo andrebbe reso. Può essere uno dei seguenti:

  • choice: rende uno, due (predefinito) o tre input select (ore, minuti, secondi), a seconda delle opzioni with_minutes e with_seconds.
  • text: rende uno, due (predefinito) o tre input testuali (ore, minuti, secondi), a seconda delle opzioni with_minutes e with_seconds.
  • single_text: rende un singolo input testuale. Il valore inserito dall'utente sarà validato nella forma hh:mm (o hh:mm:ss, se si usano i secondi).

Caution

la combinazione dell'opzione widget a single_text e with_minutes a false può portare a comportamenti inattesi, perché l'input time potrebbe non supportare la selezione solo dell'ora.

input

tipo: stringa predefinito: datetime

IL formato dei dati di ingresso, cioè il formato in cui la data è memorizzata nell'oggetto sottostante. Valori validi sono:

  • stringa (p.e. 12:17:26)
  • datetime (un oggetto DateTime)
  • array (p.e. array('hour' => 12, 'minute' => 17, 'second' => 26))
  • timestamp (p.e. 1307232000)

Il valore proveniente dal form sarà normalizzato nello stesso formato.

with_minutes

tipo: Booleano predefinito: true

Se includere o meno i minuti nell'input. Aggiungerà un ulteriore input per catturare i minuti.

with_seconds

tipo: booleano predefinito: false

Se includere o meno i secondi nell'input. Se true, ci sarà un campo aggiuntivo per inserire i secondi.

hours

tipo: intero predefinito: da 1 a 23

Lista di ore disponibili per il tipo di campo hours. Questa opzione è rilevante solo se l'opzione widget è impostata a choice.

minutes

tipo: intero predefinito: da 1 a 59

Lista di minuti disponibili per il tipo di campo minutes. Questa opzione è rilevante solo se l'opzione widget è impostata a choice.

seconds

tipo: intero predefinito: da 1 a 59

Lista di secondi disponibili per il tipo di campo seconds. Questa opzione è rilevante solo se l'opzione widget è impostata a choice.

model_timezone

tipo: stringa predefinito: fuso orario di sistema

Fuso orario con cui vengono salvati i dati ricevuti. Deve essere uno dei fusi orari supportati da PHP

view_timezone

tipo: stringa predefinito: fuso orario di sistema

Fuso orario con cui i dati vanno mostrati all'utente (e quindi anche i dati che l'utente invia). Deve essere uno dei fusi orari supportati da PHP

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 impostate 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,
));

Opzioni ridefinite

by_reference

predefinito: false

Le classi DateTime sono trattate come oggetti immutabili.

error_bubbling

predefinito: false

Opzioni ereditate

Queste opzioni sono ereditate dal tipo 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:

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

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:

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

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

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.

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

inherit_data

2.3Questa opzione era nota come virtual prima di Symfony 2.3.

tipo: booleano predefinito: false

Questa opzione determina se il form erediterà dati dal form genitore. Può essere utile se si ha un insieme di campi duplicati in form multipli. Vedere Ridurre la duplicazione di codice con "inherit_data".

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:

1
2
3
4
5
6
7
8
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.

Variabili di form

Variabile Tipo Uso
widget mixed Il valore dell'opzione widget.
with_minutes Booleano Il valore dell'opzione with_minutes.
with_seconds Booleano Il valore dell'opzione with_seconds .
type stringa Presente solo se widget è single_text HTML5 è attivo, contiene il tipo di input da usare (datetime, date o time).

This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License .