2011-12-08 7 views
7

Come è possibile aggiungere un salvataggio e tornare all'elenco nella vista per la creazione di un nuovo record? In generale, voglio più pulsanti, quindi sto cercando una risposta generica.Symfony admin generator: un pulsante per salvare e tornare all'elenco

EDIT: generatore di default mi offre due pulsanti:

  1. Salva
  2. risparmio e aggiungi

voglio un pulsante che saves and takes me back to the list. E voglio anche un pulsante personalizzato con un'azione personalizzata.

Mi spiego la situazione attuale:

Ho un'azione lista create che mi porta ad una forma avendo alcuni campi di input. Ora voglio fare un'immagine usando i dati di questi campi. Voglio visualizzare questa immagine come anteprima sul lato destro del modulo. Per questo ho bisogno di un pulsante di anteprima in modo che ogni volta premuto, invia i dati a se stesso per l'anteprima e ulteriori modifiche.

Spero sia più chiaro ora.

+0

Potrebbe spiegare meglio la tua domanda? ** I pulsanti Salva ** e ** Torna all'elenco ** sono abilitati per impostazione predefinita in un modulo. Dove vuoi inserire più pulsanti? Hai bisogno anche di pulsanti con azioni personalizzate? – macgyver

+0

@macgyver: Ho aggiornato la domanda. – prongs

risposta

8

dovete prima aggiungere generator.yml tuoi save_and_back_to_list e altri personalizzati my_other_action azioni:

config: 
     actions: ~ 
     fields: ~ 
     list: ~ 
     filter: ~ 
     form: ~ 
     edit: 
     actions: 
      _save: ~ 
      _list: ~ 
      save_and_back_to_list: ~ 
      my_other_action: ~ 
     new: 
     actions: 
      _save: ~ 
      _save_and_add: ~ 
      _list: ~ 
      save_and_back_to_list: ~ 
      my_other_action: ~ 

Poi si deve aggiungere le funzioni di supporto personalizzate per creare i pulsanti in /apps/myapplication/modules/mymodule/lib/mymoduleGeneratorHelper.class.php

public function linkToSaveAndBackToList($object, $params) 
    { 
    return '<li class="sf_admin_action_save_and_back_to_list"><input type="submit" value="'.__($params['label'], array(), 'sf_admin').'" name="save_and_back_to_list" /></li>'; 
    } 

    public function linkToMyOtherAction($object, $params) 
    { 
    return '<li class="sf_admin_action_my_other_action"><input type="submit" value="'.__($params['label'], array(), 'sf_admin').'" name="my_other_action" /></li>'; 
    } 

Ora ottenere due pulsanti di invio sia nel formato New e Edit.

Infine, è necessario eseguire l'override della funzione processForm(sfWebRequest $request, sfForm $form), che è possibile trovare in /cache/dev/modules/autoMymodule/actions/actions.class.php, per gestire le nuove azioni di invio. Immagino che la tua funzione create prevale su quella del generatore di amministrazione.

Spero di non dimenticare nulla.

+0

in effetti il ​​mio 'create' non sta sovrascrivendo quello predefinito, cambierò il nome in qualcos'altro. ma ho avuto l'idea. – prongs

+0

cosa significa '__'? – prongs

+0

Le azioni fornite dal generatore di amministrazione iniziano con un trattino basso, ma non nella classe di azioni. Immagino che questa regola di Symfony abbia lo scopo di ottenere una separazione dalle azioni dell'utente. – macgyver