Symfony2 arriva il sito dei Bundle

Vi stavate iniziando a chiedere se il tal plugin per symfony fosse stato convertito in bundle per symfony 2? Per rispondere a questo quesito è stato pubblicato da qualche giorno il sito Symfony2Bundles che cerca di aggiornarci sullo stato dei vari bundles presenti su GitHub.

Il codice dello stesso sito, messo a disposizione dagli autori di KnpLabs, è liberamente scaricabile e forkabile da GitHub ed inoltre è possibile seguire una discussione su Google Wave per partecipare attivamente al suo mantenimento.

buoni bundle a tutti!

Usando symfony 1.2 e Doctrine 1.0 problemi con le equal nested relation

Non so se vi è mai capitato di avere a che fare con le cosiddette “equal nested relation”. Queste relazioni tra oggetti sono quelle relazioni che possono essere tradotte (per quanto riguarda il database) con un “auto join” su una stessa tabella.

Un esempio pratico lo potete trovare fra gli esempi del sito dell’ORM Doctrine : Equal Nested Relation.

In uno dei miei progetti (Symfony 1.2, Doctrine 1.0) ho dovuto usare un esempio analogo, ma invece che utenti collegati fra loro con una relazione molti a molti, dovevo collegare più ticket. Una volta messo tutto in piedi e creato le classi necessarie ho fatto qualche prova e mi è spuntato questo errore:

500 | Internal Server Error
Doctrine_Connection_Mysql_Exception SQLSTATE23000: Integrity constraint violation: 1062 Duplicate entry 'N-N' for key 1

Inizialmente ho cercato una soluzione che potesse dipendere dalle configurazioni del file schema.yml che usavo e poi soluzioni che potessero riguardare qualsiasi altra cosa. Dopo quasi due giorni a sbattere la testa su questo problema sono andato al PHPDay2009 a cui avrebbe partecipato anche Jonathan Wage, ovviamente ripromettendomi di chiedere direttamente a lui!!

Fortunatamente c’è stata occasione di parlargli e Jonathan è stato più che gentile tanto da aiutarmi e mettersi a provare a trovare una soluzione lì per lì per il mio problema. Dopo circa un’ora siamo arrivati a capire dov’era il problema. Poi a pezzi e bocconi siamo arrivati ad una soluzione nelle successive 24 ore!

La patch da utilizzare è scaricabile da qui. Ricordo che questa NON È UNA SOLUZIONE DEFINITIVA. E’ piuttosto un workaround al problema!! Un ticket relativo a questa soluzione è stato aperto qui.

Sembra che questo problema sia risolto utilizzando symfony 1.3 e doctrine 1.1, quindi aspettiamo con ansia la prossima uscita di symfony che include sfDoctinePlugin con doctrine 1.1!

Symfony 1.1.1 e la nuova directory dei Plugins

E’ stata rilasciata la prima sub-release di Symfony 1.1 che punta a correggere alcuni bachi introdotti nel nuovo branch del framework.

Nello specifico sono stati corretti problemi riguardanti Propel, la gestione del caching dei moduli e l’overriding dei plugin.

E proprio per questi è nata anche la nuova directory dei plugins, dove è possibile filtrare plugin per compatibilità, requisiti e poter collaborare meglio allo sviluppo degli stessi. Più o meno come avviene su Launchpad di Canonical.

Symfony plugins: Audit degli oggetti Propel

Se avete bisogno di memorizzare lo storico su db delle azioni CRUD che un utente compie su vari oggetti Propel, vi consiglio questo interessante plugin, sfPropelAuditPlugin. Esso memorizza su una tabella del db vari dati come:

  • utente che sta eseguendo l’azione
  • nome della classe dell’oggeto modificato
  • id dell’oggetto modificato
  • data della modifica
  • le modifiche effettuate sui vari attributi
  • ip remoto

Per attivare il plugin è sufficente installarlo ed aggiungere il behaviour agli oggetti che si vogliono controllare.

Il plugin per il momento funziona solo per symfony 1.0. Io l’ho patchato per farlo funzionare con symfony 1.1 e a breve invierò le modifiche all’amministratore del plugin.

UPDATE

Potete scaricare la versione compatibile con symfony 1.1 dal seguente repository http://svn.symfony-project.com/plugins/sfPropelAuditPlugin/branches/1.1/