Dopo qualche giorno di pausa forzata dovuta ad impegni, torna più prepotente che mai il nostro caro vecchio symfony!
Finalmente! Dopo le prime puntate dove ci siamo occupati più che altro di teoria, ora è giunto il momento di vedere davvero del codice PHP.
Anzi, prima di fare ciò dobbiamo dedicarci un attimo al database. Come ho accennato, questo nostro progetto ci porterà alla realizzazione di un forum, che ho affettuosamente chiamato “shiny!“. Ora, abbiamo bisogno di definire concretamente questo forum, per poterci lavorare sopra. Per poter utilizzare un database in symfony, è necessario descrivere la struttura delle tabelle attraverso il file config/schema.yml. Ecco quello che utilizzo io:
propel:
groups:
_attributes: { phpName: Group }
id: ~
name: varchar(50)
authors:
_attributes: { phpName: Author }
id: ~
group_id: { foreignTable: groups, foreignReference: id }
name: varchar(50)
password: varchar(50)
image: varchar(255)
signature: varchar(255)
advises: integer
created_on: timestamp
forums:
_attributes: { phpName: Forum }
id: ~
title: varchar(50)
description: varchar(255)
parent_id: { foreignTable: forums, foreignReference: id }
threads:
_attributes: { phpName: Thread }
id: ~
forum_id: { foreignTable: forums, foreignReference: id }
author_id: { foreignTable: authors, foreignReference: id }
created_on: timestamp
title: varchar(50)
posts:
_attributes: { phpName: Post }
id: ~
author_id: { foreignTable: authors, foreignReference: id }
thread_id: { foreignTable: threads, foreignReference: id }
created_on: timestamp
updated_on: timestamp
text: longvarchar
Chiarimento rapido. YAML è un linguaggio di markup dalla sintassi più coincisa rispetto ad XML, che si basa sull’indentazione con gli spazi (niente tab quindi). Per ulteriori informazioni potete visitare la pagina ufficiale del progetto.
Ora analizziamo per bene ciò che ho appena scritto: L’elemento “propel:” è il padre di tutti gli altri, e deve esserci forzatamente su utilizzate questo ORM (che è il default plugin di symfony). Ogni figlio di propel è il nome con cui la tabella è salvata nel DBMS, seguita dall’elemento _attributes; Tra le parentesi graffe l’elemento phpName indica il nome che avrà la classe generata in PHP (per convenzione singolare con la prima lettera maiuscola). Di seguito poi ogni elemento delle tabelle, dove id: ~ significa chiave primaria. Gli altri elementi credo che siano comprensibili, per cui non mi dilungo tanto nella spiegazione. In caso di dubbi scriveteli pure nei commenti.
Ora da linea di comando date questi comandi:
php symfony propel:build-model php symfony propel:build-forms
Seguiti da:
php symfony propel:build-sql
E troverete il file sql generato per la creazione del nostro database all’interno della directory data/sql sotto il nome di lib.model.schema.sql.
Siccome probabilmente questo file non sarà al 100% corretto e pronto all’inserimento, vi consiglio di aprilo e correggerlo a mano, usandolo solo come base.
Ultima cosa prima di partire sarà modificare il file config/databases.yml e trasformarlo nel seguente:
all: propel: class: sfPropelDatabase param: dsn: mysql://user:password@localhost/database
Ovviamente adattando user, password e database alla vostra situazione.
Con la configurazione abbiamo finito, la prossima volta realizzeremo i controller della nostra applicazione. Alla prossima!





Sono Daniel Londero un web developer che lavora ogni giorno con PHP ormai da 4 anni.
Da 2 anni a questa parte mi sono molto interessato a
Questo articolo è stato segnalato su ZicZac.it….
…
symfony: back in action!…
Dopo qualche giorno di pausa forzata dovuta ad impegni, torna più prepotente che mai il nostro caro vecchio symfony!
Finalmente! Dopo le prime puntate dove ci siamo occupati più che altro di teoria, ora è giunto il momento di vedere davvero del cod…
attendo con ansia la parte relativa alla validazione dei dati! fino a qui è tutto perfettamente chiaro! bravi!