Guide galattiche per aspiranti programmatori

developer cyborg che sorride al pc assieme ad un piccolo robot
Lezione 23 / 33

Come validare le route in Symfony

Come abbiamo visto nel capitolo precedente, i valori passati come parametri alle route potrebbero essere non validi o addirittura non sicuri. Qui entra in gioco la validazione dei parametri delle route, essenziale per diverse ragioni:

 

  • integrità dei dati: verificare che i valori ricevuti siano nel formato corretto e non causino errori nell’applicazione
  • sicurezza: prevenire attacchi come SQL injection
  • user experience: fornire all’utente sempre dei feedback sensati quando inserisce dati non validi o esegue azioni non consentite

 

Come validare le route in Symfony? Semplice! Per validare i parametri è possibile utilizzare l’opzione requirements all’interno della definizione della route. I requirements sono composti da espressioni regolari che specificano per ogni singolo parametro quali sono i requisiti da soddisfare

 

Per specificare nell’esempio precedente che il parametro max deve essere di tipo numerico, possiamo aggiungere l’opzione requirements alla definizione della route in questo modo:

 

 #[Route('/hello/random/{max}', name: 'app_hello_random', requirements: ['max' => '\d+'])]

Come si nota, al parametro max è stata associata l’espressione regolare ‘\d+’ che accetta solo valori numerici. Se l’URL contiene un valore non numerico per il parametro max, Symfony non valuterà la route.

Proviamo a ricaricare l’URL symfony-test.local/hello/random/ciao

routing in symfony

Come risultato non otterremo più un errore 500 ma un 404 not found in quanto la route con parametro testuale non è riconosciuta come registrata sul sistema.

 

L’opzione requirements può essere utilizzata inline per rendere la route più compatta. La sintassi da applicare ad ogni parametro è

 

{nome del parametro<requirements>}

La route precedente può essere modificata come segue:

 

#[Route('/hello/random/{max<\d+>}', name: 'app_hello_random')]

Debug delle route in Symfony

Una tipica web application sarà composta da un numero importante di route. Per semplificare la gestione ed il debug delle route presenti nell’applicazione, Symfony mette a disposizione un utile comando della console, che abbiamo già accennato brevemente nella sezione relativa ai controller:

 

php bin/console debug:router

Il comando debug fornisce in output l’elenco di tutte le route nello stesso ordine in cui vengono valutate da Symfony. Per ogni route vengono fornite le seguenti informazioni:

 

  • Name: il nome univoco assegnato alla route
  • Method: il metodo HTTP (o i metodi) da utilizzare per accedere alla route
  • Scheme: il protocollo utilizzato per la route, ovvero http o https
  • Host: indica l’host (o gli host) su cui la rotta è valida. Di default, la rotta è valida per qualsiasi host, ma Symfony permette di definire rotte specifiche per determinati domini o sottodomini.
  • Path: il percorso sul quale è mappata la route

 

Lanciando il comando da terminale, possiamo visualizzare le route create nella classe controller HelloController che stiamo utilizzando in questa guida.

routing in symfony

Per ogni singola route, inoltre, è possibile accedere a dettagli specifici. Ad esempio, esploriamo nel dettaglio la route app_hello_random:

 

php bin/console debug:router app_hello_random

In output avremo:

routing in symfony

Oltre alle informazioni già ottenute con la lista delle route, con l’analisi di una singola route otteniamo anche delle utili informazioni riguardo la classe controller ed il metodo associati alla rotta, requisiti sui parametri ed eventuali opzioni aggiuntive configurate per la route.

Contattaci senza impegno per informazioni sul corso

Scopriamo insieme se i nostri corsi fanno per te. Compila il form e aspetta la chiamata di uno dei nostri consulenti.

Contattaci senza impegno per informazioni sul corso

Pagamento rateale

Valore della rata: A PARTIRE DA 112 €/mese.

Esempio di finanziamento  

Importo finanziato: € 2440 in 24 rate da € 112 – TAN fisso 9,37% TAEG 12,57% – importo totale del credito € 2788,68.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/07/2023 al 31/12/2023.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Pagamento rateale

Valore della rata: A PARTIRE DA 183 €/mese.

Esempio di finanziamento 

Importo finanziato: € 3990 in 24 rate da € 183 – TAN fisso 9,37% TAEG 12,57% – importo totale del credito € 4496,56.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/07/2023 al 31/12/2023.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.