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.

Annunci

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;
  }

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

Admin Generator: definire la action principale

Per definire la action principale in una applicazione Symfony, generata con l’Admin Generator occorre modificare il file di configurazione di routing routing.yml.
Nel file:
apps/backend/config/routing.yml
Modificare e/o aggiungere la sezione homepage:

homepage:
  url:   /
  param: { module: events, action: index }

Dove in questo esempio:

  • backend: è il nome dell’applicazione genarata con l’admin generator;
  • events: è il nome del modulo principale;
  • index: è il nome della action di default.

Infine eliminare la cache affinchè le modifiche risultino attive:

php symfony cc
%d blogger hanno fatto clic su Mi Piace per questo: