teamon.eu

blah blah blah

sfFormGenerator

01 września 2007

Kategorie:

Tagi:

  • PHP Symfony

Postanowiłem ułatwić sobie nieco pracę z formularzami w Symfony. Większość z nich opiera się na takim samym schemacie, dlaczego więc nie zautomatyzować tej czynności.

Tak więc napisałem plugin, a raczej klasę (w sumie dwie), jak na razie nie chce mi się tworzyć z tego paczki.

Przejdźmy do omówienia "Jak to działa"

Zamiast używania helperów w szablonie, w akcji (choć na dobrą sprawę można to też zrobić w szablonie) piszemy:

 
$form = new sfFormGenerator('AKCJA_FORMULARZA');
$form->setHeader('TEKST_W_LEGEND');
$form->addInput('Twój email', 'email', 'email@domain.com');
$form->addInputPassword('Hasło', 'pass');
$form->addCheckbox('Tak, chce', 'agree');
$form->addSelect('Typ', 'type', array('Ta', 'Tamta', 'Inna'), 1);
$form->addSubmit('Wyślij');
$this->form = $form;
 
// a w szablonie
 
echo $form;
 

co da nam w rezultacie:

 
<form method="post" action="AKCJA_FORMULARZA">
<fieldset>
<legend>TEKST_W_LEGEND</legend>
<div>
  <label for="email">Twój email</label>
  <input type="text" name="email" id="email" value="email@domain.com" class="text" />
  <div style="display:none;" class="form_error" id="error_for_email"> &darr;&nbsp; &nbsp;&darr;</div>
 
</div>
 
<div>
  <label for="pass">Hasło</label>
  <input type="password" name="pass" id="pass" value="" class="password" />
  <div style="display:none;" class="form_error" id="error_for_pass"> &darr;&nbsp; &nbsp;&darr;</div>
</div>
 
<div>
  <label for="agree">Tak, chce</label>
 
  <input type="checkbox" name="agree" id="agree" value="1" class="checkbox" />
  <div style="display:none;" class="form_error" id="error_for_agree"> &darr;&nbsp; &nbsp;&darr;</div>
</div>
 
<div>
  <label for="type">Typ</label>
  <select name="type" id="type"><option value="0">Ta</option>
<option value="1" selected="selected">Tamta</option>
 
<option value="2">Inna</option>
</select>
  <div style="display:none;" class="form_error" id="error_for_type"> &darr;&nbsp; &nbsp;&darr;</div>
</div>
 
<div>
  <input type="submit" name="commit" value="Wyślij" class="submit" />
</div>
 
</fieldset>
</form>
 

Niektórzy może zauważyli, iż parametry metod są identyczne z helperami. W większości przypadków to prawda, lecz jest kilka wyjątków.

Jak widać, generator automatycznie dodaje nam <label> oraz pojemnik na error

Generator daje też możliwość zmiany tagu <legend> na dowolny za pomocą:

 
$form->setHeaderTag('h3');
 

Download

sfFormGenerator.rar

Najlepiej wrzucić oba pliki do któregoś z folderów /lib. Nie zapomnijcie o wyczyszczeniu cache. Wszelkie sugestie mile widziane :)

3 komentarze

  • michal 01 września 2007 23:37:50

    Dzięki! Popróbuję sobie i mam nadzieję, że się przyda. Pozdrowienia.

  • Teamon 02 września 2007 00:06:56

    Jak masz jakieś sugestie to śmiało :)

  • chester 02 września 2007 23:17:01

    dzięki za zaproszenie :]
    wygląda na to że skorzystam z Twoich pomysłów ;)
    pozdr. chester

Zostaw komentarz

code