sfFormGenerator
01 września 2007Postanowił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"> ↓ ↓</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"> ↓ ↓</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"> ↓ ↓</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"> ↓ ↓</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.rarNajlepiej wrzucić oba pliki do któregoś z folderów /lib. Nie zapomnijcie o wyczyszczeniu cache. Wszelkie sugestie mile widziane :)
3 komentarze
Dzięki! Popróbuję sobie i mam nadzieję, że się przyda. Pozdrowienia.
Jak masz jakieś sugestie to śmiało :)
dzięki za zaproszenie :]
wygląda na to że skorzystam z Twoich pomysłów ;)
pozdr. chester