Archive for the 'Symfony' Category

Doctrine migrate: quando ci si accorge di essere in ritardo

mercoledì, maggio 19th, 2010

A volte può capitare di essere pronti per il deploy di una applicazione quando ci accorgiamo di aver dimenticato di creare gli script per aggiornare il database in produzione.
Con Symfony, Doctrine e un sistema di versioning è possibile rimediare molto facilmente.
Questa è la mia ricetta:

  • Recuperare la versione di config/doctrine/schema.yml che rappresenta il database in produzione (verosimilmente il file che è adesso in produzione ;) oppure con il sistema di versioning)
  • Lanciare ./symfony doctrine:build --all
  • Copiare l’attuale file config/doctrine/schema.yml in un posto sicuro
  • Sostituire il file config/doctrine/schema.yml con la copia “vecchia” recuperata
  • Lanciare ./symfony doctrine:generate-migrations-diff (se necessario con il parametro env settato)
  • Aprire il file *version*.php appena creato dalla procedura in lib/migration/doctrine (se è la prima volta che migri ce n’è uno solo altrimenti apri solo l’ultimo)
  • Inverti il nome dei metodi “up()” e “down()”, cioè sostituisci il nome “up()” con “down()” e viceversa
  • Riporta lo schema.yml all’ultima versione
  • Ora puoi lanciare il task di migrazione ./symfony doctrine:migrate
  • Nel caso di errori di CHARSET o COLLATION nel lanciare il task precedente, verifica che nel file di migrazione che hai modificato precedentemente non siano presenti i parametri ‘charset’ e ‘collate’ come opzioni dei metodi createTable()

Buona migrazione a tutti.

Symfony: caricare helper dalle action

sabato, marzo 27th, 2010

Talvolta è utile poter caricare alcuni helper dal controller o dal modello, per esempio mi è capitato di dover formattare una data o utilizzare alcuni dei miei helper direttamente dal controller.
Per far questo è sufficiente inserire il codice seguente nel metodo in cui si ha la necessità:

sfLoad::helpers(array('helper1', 'helper2', ...));

Buon coding.

UPDATE: per sf 1.4

$this->getContext()->getConfiguration()->loadHelpers('Partial');
$this->getContext()->getConfiguration()->loadHelpers(array('helper1', 'helper2', ...));

Symfony e Ajax, finalmente il “cart” anche con jQuery

sabato, settembre 19th, 2009

Ho appena patchato il plugin sfJqueryReloaded (il trunk) per abilitare il supporto a jq_drop_receiving_element(), ultimo tassello mancante per poter riscrivere il tutorial ajax di symfony anche con jQuery.

Potete trovare la demo riscritta in http://cart.demo.keasoft.it/ e la patch (in attesa di approvazione dai lead del plugin) qui jQueryHelper.php.diff

Buon divertimento

Far convivere Symfony 1.0, 1.1 e 1.2

giovedì, ottobre 2nd, 2008

A volte capita di dover far convivere sulla stessa macchina di sviluppo diverse versioni si Symfony. Ci sono diverse soluzioni per poter realizzare il nostro scopo e qui vi esporrò quella che utilizzo più frequentemente.
Presupposto che la maggior parte delle applicazioni siano scritte per SF 1.0 oppure che questo sia già installato via PEAR e presupposto che vogliamo installare anche la 1.1 e la 1.2 sulla stessa macchina, procediamo come segue:

  • installazione di SF 1.0 via PEAR
  • installazione di SF 1.1 e 1.2 via SVN

L’installazione classica di SF da manuale via PEAR è la seguente (la versione corrente è la 1.0.18):

$ pear channel-discover pear.symfony-project.com
$ pear install symfony/symfony-1.0.18

In questo modo quando lanciamo il comando

$ symfony -V

otterremo la versione appena installata

symfony version 1.0.18

Ora procediamo con l’installazione di Symfony 1.1 da SVN: prendendo spunto dal manuale prendiamo la versione corrente, non quella di sviluppo ma quella stabile (ad oggi la 1.1.3).
Prepariamo la directory che ci servirà come deposito di SF 1.1 e 1.2

$ mkdir ~/symfony_rep
$ cd ~/symfony_rep

Ora prendiamo l’ultima release del ramo 1.1

$ svn co http://svn.symfony-project.com/tags/RELEASE_1_1_3
$ ln -s RELEASE_1_1_3 1.1

Facciamo la stessa cosa per la 1.2 (se ne avete bisogno) ma in questo caso non essendo ancora stata rilasciata la stabile dovremmo prendere la versione di sviluppo come da manuale

$ svn co http://svn.symfony-project.com/branches/1.2

Ottimo, abbiamo tutte e tre le versioni installate, ora non ci resta che aggiungere 2 alias per rendere l’utilizzo della versione 1.1 e 1.2 più semplice.

$ alias sf11='~/symfony_rep/1.1/data/bin/symfony'
$ alias sf12='~/symfony_rep/1.2/data/bin/symfony'

Questi alias per comodità potete inserirli nel vostro ~/.bashrc così che siano sempre disponibili ad ogni riavvio (o apertura di nuove shell).
Se tutto è andato bene, digitando i vari sf11 e sf12 doveste ottenere il seguente risultato:

$ sf11 -V
symfony version 1.1.3 (/home/VOSTROUTENTE/symfony_rep/RELEASE_1_1_3/lib)
$ sf12 -V
symfony version 1.2.0-DEV (/home/VOSTROUTENTE/symfony_rep/1.2/lib)

Buon lavoro!