Symfony sfWidgetFormSchemaFormatter

Oggi vedremo l’utilizzo del sfWidgetFormSchemaFormatter per la creazione di form personalizzati in Symfony.

  • Struttura del file sfWidgetFormSchemaFormatter
  • Come richiamarlo nel template
  • Ricordati di..

Il file personalizzato (sfWidgetFormSchemaFormatter) viene creato nella cartella apps/<backend-frontend-altro>/lib/widget/ e può avere una formattazione come segue o come voi la ritenete più opportuna, un esempio è il seguente:

class sfWidgetFormSchemaFormatterTest extends sfWidgetFormSchemaFormatter

{

protected    $row           = “<div class=\”form_row%row_class%\”>\n%label%\n%error%\n%field%\n%hidden_fields%\n</div>”,

$help                                 = “<p class=’test’>%help%</p>”,

$errorRow                      = “%errors%”,

$errorListInARow       = “%errors%”,

$errorRowInARow      = ‘<b>%error%</b>’,    $namedErrorRowInARow     = “”,

$decorator                      = ‘%content%’;
public function formatRow($label, $field, $errors = array(), $help = ”, $hiddenFields = null)

{

$row = parent::formatRow(      $label,      $field,      $errors,      $help,      $hiddenFields    );

return strtr($row, array(      ‘%row_class%’ => (count($errors) > 0) ? ‘ form_row_error’ : ”,    ));

}
}

Richiamare il nostro sfWidgetFormSchemaFormatterTest creato in precedenza utilizzando il renderRow():

<fieldset>
<legend>Anagrafica</legend>

<?php echo $form[‘nome’]->renderRow();?>
<?php echo $form[‘cognome’]->renderRow();?>
….
</fieldset>

Ricordarsi che quando si crea un nuovo modulo bisogna mettere –no-verbose-template in modo tale ottenere i template strutturati nello standard da noi creato nel file sfWidgetFormSchemaFormatterTest.

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...