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

Creare un nuovo modulo per l’applicazione creata con l’Admin Generator (Symfony)

In Symfony per aggiungere un nuovo modulo per la gestione di un Model all’applocazione creata con l’admin generator eseguire il comando:

php symfony doctrine:generate-admin backend Category --module=category

Dove:

  • backend: è il nome dell’applicazione creata con l’Admin Generator;
  • Category: è il nome del Model che si vuole gestire
  • category: è il nome del modulo

Configurazione connessione database in Symfony e Doctrine

Il comando per configurare il database in Symfony:

php symfony configure:database "mysql:host=localhost;dbname=dbname" root mYsEcret
%d blogger hanno fatto clic su Mi Piace per questo: