notiziephp.it

Novità in Symfony 8.2: constraint EntityExists, Cron e Audio (Symfony Blog)

Traduzione da Symfony Blog
8 Ottobre 2026 Tempo di lettura: 2 minuti
Novità in Symfony 8.2: constraint EntityExists, Cron e Audio (Symfony Blog)

Il componente Validator di Symfony fornisce oltre 80 constraint integrati per validare ogni tipo di dato. Symfony 8.2 aggiunge tre nuovi constraint per alcune esigenze comuni che in precedenza richiedevano codice di validazione personalizzato.

Quando la tua applicazione riceve identificatori di entità nei DTO (ad esempio da una richiesta API o da un form), di solito devi ripetere la stessa logica: cercare l'entità, verificare se esiste e lanciare un errore in caso contrario. Il nuovo constraint EntityExists gestisce questo controllo e segnala un'entità mancante come violazione di validazione sulla proprietà:

Per impostazione predefinita, il valore viene cercato tramite l'identificatore dell'entità. Puoi anche usare l'opzione repositoryMethod per chiamare un tuo metodo del repository; qualsiasi risultato truthy (un'entità, un conteggio, true, ecc.) significa che l'entità esiste.

Come la maggior parte dei constraint, null e le stringhe vuote sono considerati validi, quindi combinalo con NotBlank quando il valore è obbligatorio.

Se la tua applicazione consente agli utenti di definire pianificazioni, un'espressione regolare che controlla solo il formato può non rilevare valori non validi come 60 * * * * o */0 * * * *. Il nuovo constraint Cron valida le espressioni cron usando un parser dedicato:

La modalità MODE_HASHED accetta anche espressioni cron con hash come # # * * * e alias come #daily, che il componente Scheduler usa per distribuire le attività ricorrenti nel tempo. Questo constraint richiede il pacchetto dragonmantank/cron-expression, lo stesso usato dal componente Scheduler per i trigger cron.

Symfony 7.4 ha aggiunto un constraint Video per validare i file video. Symfony 8.2 aggiunge la sua controparte audio, il constraint Audio, che valida i file audio in base alle loro caratteristiche effettive (durata, bitrate, sample rate, numero di canali, codec e container) e non solo al loro tipo MIME e alla dimensione:

Il constraint Audio estende il constraint File, quindi tutte le sue opzioni sono disponibili. La sua opzione mimeTypes ha come valore predefinito audio/* e, a differenza del constraint Video, non limita codec o container a meno che tu non imposti le opzioni allowedCodecs e allowedContainers. Quando configuri uno qualsiasi dei controlli specifici per l'audio, utilizza il componente Process e il binario ffprobe di FFmpeg per ispezionare il file.

Condividi su: LinkedIn

Altri articoli recenti