Zmiana sposobu wyświetlania formularzy – renderRow() Symfony 1.4

PoradyDodano Listopad 17, 2011 at 23:21

Czy zastanawialiście się czasami jak można dopasować sposób wyświetlania formularzy przez frameworka Symfony 1.4 do własnych potrzeb? Użycie domyślnej metody renderRow() zwraca nam wszystko w jednym wierszu podzielone na dwie kolumny: opis pola i pole wprowadzania danych. Dla mnie metoda ta nie jest tak estetyczna jakbym tego chciał.

Można poradzić sobie poprzez tworzenie własnego formularza poprzez używanie tylko render(), wówczas wygeneruje nam się pole wprowadzania bez opisu. Do tego możemy zbudować własne tabele czy warstwy tak by uzyskać wymagany efekt. Czy jednak nie da się tego jakoś bardziej zautomatyzować już na poziomie frameworka?

W tym momencie powinniśmy zainteresować się klasą sfWidgetFormSchemaFormatterTable znajdującą się w katalogu z widgetami. Jej domyślna zawartość wygląda następująco:

protected
$rowFormat       = „<tr>\n  <th>%label%</th>\n  <td>%error%%field%%help%%hidden_fields%</td>\n</tr>\n”,
$errorRowFormat  = „<tr><td colspan=\”2\”>\n%errors%</td></tr>\n”,
$helpFormat      = ‘<br />%help%’,
$decoratorFormat = „<table>\n  %content%</table>”;

Bawiąc się poszczególnymi zmiennymi możemy osiągnąć oczekiwany przez nas efekt, np. zmienić działanie renderRow() tak, by tytuł pola i obszar wprowadzania danych były pod sobą, a nie obok siebie.

Tags: , , , ,