Nov. 11, 2008
Symfony 1.1 Forms, czyli nowość w Symfony, na którą warto zwrócić uwagę.
Cudo o którym mowa bazuje na nowych klasach: sfForm oraz sfWidget
Przykład:
// lib/form/ContactForm.class.php
class ContactForm extends sfForm
{
public function configure()
{
$this->setWidgets(array(
'name' => new sfWidgetFormInput(),
'email' => new sfWidgetFormInput(),
'message' => new sfWidgetFormTextarea(),
));
}
}
I… na tej podstawie budujemy nasz formularz!
$ php symfony generate:module frontend contact
Otrzymaliśmy nowy moduł: contact.
Teraz tylko akcja:
// apps/frontend/modules/contact/actions/actions.class.php
class contactActions extends sfActions
{
public function executeIndex()
{
$this->form = new ContactForm();
}
}
oraz widok:
<form action="<?php echo url_for('contact/submit') ?>" method="POST">
<table>
<?php echo $form ?>
<tr>
<td colspan="2">
<input type="submit" />
</td>
</tr>
</table>
</form>
Czyścimy cache, otwieramy contact/index. Pokaż żródło i widzimy elegancko wygenerowany kod.
DRY! Ku chwale obiektowości!
Co jeszcze ciekawego?
Dla uprzednio stworzonych pól możemy sobie zadefiniować na stałe etykiety, do tego wszystkiego - automatyczna ochrona przed atakami XSS.
Nie musimy także tracić za dużo czasu na walidację.
$this->setValidators(array(
'name' => new sfValidatorString(array('required' => false)),
'email' => new sfValidatorEmail(),
'subject' => new sfValidatorChoice(array('choices' => array_keys(self::$subjects))),
'message' => new sfValidatorString(array('min_length' => 4)),
));
Automatyczne walidatory! Bo przecież chodzi o to żeby programować jak najdokładniej ale i oczywiście jak najszybciej!
Temat jest spory, chciałem tylko zwrócić na niego uwagę.
Zapraszam do źródła:
http://www.symfony-project.org/book/forms/1_1/en/
Enjoy
Musisz być zalogowany aby komentować