Per capire come funziona in pratica il framework analizziamo la creazione di un'applicazione di base. Il progetto riguarda la realizzazione di una rubrica costituita da un'unica tabella che chiameremo rubrica con i seguenti campi:
- id: identificativo univoco del record;
- nome: nome del contatto, varchar(255), not null;
- cognome: cognome del contatto, varchar(255), not null;
- telefono: numero di telefono del contatto, varchar(20), not null;
- created_at: data e ora di creazione del record.
Il server per i dati MySQL deve già contenere al suo interno un database che, per comodità, chiameremo rubrica. Sebbene useremo MySQL va detto che analoghe considerazioni valgono per tutti i tipi di database supportati da Symfony.
Per prima cosa creiamo una copia della cartella sf_sandbox all'interno della directory principale del web server (c:wampwww) e, per distinguerla dalle altre, rinominiamo questa copia in sf_rubrica. Questo comporterà la modifica di alcuni file di configurazione. In sf_rubricaconfigpropel.ini sostituite nelle variabili propel.project e propel.output.dir la stringa sf_sandbox con sf_rubrica. Poi in sf_rubricaconfigproperties.ini, sostituite nella variabile name la stringa sf_sandbox con sf_rubrica.
Fatto questo possiamo scrivere il file che definisce la base dati: il vero punto di partenza per l'intero progetto. Apriamo sf_rubricaconfigschema.yml e includiamo solo il seguente codice:
Listato 20: Schema in YAML
propel:
rubrica:
id: ~
nome: { type: varchar(255), required: true }
cognome: { type: varchar(255), required: true }
telefono: { type: varchar(20), required: true }
created_at: ~
salvando il file. Poi apriamo una shell DOS e portiamoci all'interno della directory c:wampwwwsf_rubrica. Da lì lanciamo il comando:
symfony propel:build-model
Questo creerà le classi che ci permetteranno di avere accesso alla base dati all'interno della directory sf_rubricalinmodel.
Per configurare il database, dalla shell DOS, diamo il comando:
symfony configure:database "mysql:dbname=rubrica;host=localhost" root mypassword
dove rubrica è il nome del database configurato in MySQL, root è la user name dell'utente del database e mypassword è la sua password. Se utilizzate WampServer, la password di MySQL è vuota.
Fatto questo, sempre dalla shell del DOS possiamo lanciare il comando:
symfony propel:build-sql
che serve per creare il file sf_rubricadatasqllib.model.schema.sql contente i comandi SQL necessari per la creazione delle tabelle del database. Per creare la struttura dati a partire da questo file si userà invece il comando:
symfony propel:insert-sql
che sovrascriverà eventuali strutture dati già esistenti sul database utilizzato (naturalmente dopo un messaggio di conferma).