Symfony, upload immagini nell’ Admin generator

Per poter definire un campo di tipo upload in una form nell’applicazione creata con l’Admin Generator di Symfony è sufficiente modificare la form relativa al model interessato.

Nel metodo configure della form inserire queste righe:

  public function configure()
  {
    parent::configure();

    $this->widgetSchema['pic'] = new sfWidgetFormInputFileEditable(array(
      'label'     => 'Moodboard Image',
      'file_src'  => '/uploads/immagini/'.$this->getObject()->getPic(),
      'is_image'  => true,
      'edit_mode' => !$this->isNew(),
      'template'  => '
%file% %input% %delete% %delete_label%
', )); $this->validatorSchema['pic'] = new sfValidatorFile(array( 'required' => false, 'path' => sfConfig::get('sf_upload_dir').'/immagini/', 'mime_types' => 'web_images', )); $this->validatorSchema['pic_delete'] = new sfValidatorPass(); }

Dove ‘pic’ indica il nome del campo interessato (l’attributo del model e/o colonna della tabella del database).

Modificare anche il nome del metodo : getPic() (sostituendolo con il nome del metodo che corrisponde all’attributo del model e/o colonna della tabella del Database.

Image Magick: rimozione automatica del colore di sfondo

Con il comando convert di Image Magick è possibile rimuovere il colore di sfondo di una immagine.
In pratica il colore di sfondo viene rimpiazzato con una trasparenza.
Il link in cui viene spiegato come fare è:
http://www.imagemagick.org/Usage/channels/#mask_floodfill

In particolare ho provato questo e, nel mio caso, ha funzionato egregiamente:

 convert immagine_di_partenza.png -bordercolor white -border 1x1 -matte \
          -fill none -fuzz 20%  -draw 'matte 0,0 floodfill' \
          -shave 1x1 immagine_con_trasparenza.png

Linux Apache PHP MySql preparare l’ambiente di sviluppo

Mi sono trovato piu’ volte a dover configurare un ambiente di sviluppo LAMP su un sistema Ubuntu GNU/Linux fresco di installazione.

Ho creato uno script semplicissimo che installa tutti i pacchetti necessari per avere un ambiente con il database MySql, il servizio HTTP Apache e i moduli PHP necessari.

#!/bin/bash
# installazione database MySql (server e client)
sudo aptitude install mysql-server mysql-client
# installazione server Apache
sudo aptitude install apache2
# installazione PHP (con relativa integrazione in Apache)
sudo aptitude install php5 libapache2-mod-php5
sudo /etc/init.d/apache2 restart
# installazione dei moduli PHP più utilizzati
sudo aptitude install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json
sudo /etc/init.d/apache2 restart
# installazione di phpmyadmin per la gestione del database MySql
sudo aptitude install phpmyadmin
Schermata-install_lamp.sh (~) - GVIM

Schermata-install_lamp.sh (~) - GVIM

Salvare questi comandi in un file install_lamp.sh e renderlo eseguibile:

chmod u+x install_lamp.sh

Per avviare l’installazione, eseguire:

./install_lamp.sh

Symfony, Admin Generator, personalizzare la lista

Symfony Admin Generator crea una action executeList in automatico basandosi sul model di riferimento.

Il comportamento predefinito è quello di recuperare tutti i record (paginandoli). Poi, le operazioni di “filtro” sono demandate all’utente il quale avrà nella parte destra a disposizione i filtri (definiti nella sezione filters).

Se si vuole recuperare fin dall’inizio un sottoinsieme di record (quindi alterando il comportamento di default) è possibile definire quale metodo della classe xxxTable si farà carico della definizione dei parametri di base per la query.

Un esempio pratico: nella lista non si vogliono vedere mai i record relativi ad un determinato status.

Nel file generator.yml nella sezione config list definire il parametro table_method (configurazione per Doctrine):

    config:
      list:
        title:   Suggestion list
        table_method: retrieveBackendSuggestionList

Nella classe Table del Model implementare il metodo definito nella configurazione dal parametro table_method:

public function retrieveBackendSuggestionList(Doctrine_Query $q) {
    $rootAlias = $q->getRootAlias();
    $q->andWhere($rootAlias.".status <> ?", 0);
    return $q;
  }

Creazione di un Modulo in Symfony

Per creare un modulo in Symfony eseguire il comando:

php symfony generate:module frontend api

Dove:

  • frontend: è il nome dell’applicazione in cui creare il modulo
  • api: è il nome del modulo
%d blogger hanno fatto clic su Mi Piace per questo: