Beispiel 1 (einfaches Formular)

develop/forms.yml

contact:
  name: Kontakt
  fields: [name, email, message]
  required: [name, email, message]
  validators:
    email: mail
  processors: [mail]

Modul / Template

Hier kann sich der Entwickler entscheiden, was ihm am besten liegt:

mit WV30_Helper

Die WV30_Helper ist eine Hilfsklasse, die mit etwas Magic die Arbeit erleichern soll. Die Klasse erkennt am versteckt übertragenen POST-Parameter (WV30_Form::FORM_ID_FIELD_NAME) welches Formular verarbeitet werden soll. Für einfache Formular ist diese Variante ausreichend. Sind mehrere Formular auf einer Seite wird es unübersichtlich und man sollte direkt die WV30_Form benutzen (siehe unten).

<?php echo sly_html(WV30_Helper::getFormMessage()) // Formular-Meldung ausgeben (wird im Backend eingestellt) ?>
<form action="" method="post">
  <input type="hidden" name="<?php echo WV30_Form::FORM_ID_FIELD_NAME ?>" value="contact" />
  <input class="<?php if (WV30_Helper::hasError('name'))       echo 'error'?>" name="name"    type="text" value="<?php echo sly_html(WV30_Helper::getValueOnError('name')) ?>" />
  <input class="<?php if (WV30_Helper::hasError('email'))      echo 'error'?>" name="email"   type="text" value="<?php echo sly_html(WV30_Helper::getValueOnError('email')) ?>" />
  <textarea class="<?php if (WV30_Helper::hasError('message')) echo 'error'?>" name="message"><?php                    echo sly_html(WV30_Helper::getValueOnError('message')) ?></textarea>
  <input type="submit" />
</form>

mit WV30_Form

Hier wird direkt mit der Instanz von WV30_Form gearbeitet.

<?php
  $form = WV30_Form::getForm('contact', true);
  if ($form->hasErrors())   echo sly_html($form->getErrorMessage());
  if ($form->isProcessed()) echo sly_html($form->getSuccessMessage()); ?>
<form action="" method="post">
  <input type="hidden" name="<?php echo WV30_Form::FORM_ID_FIELD_NAME ?>" value="<?php echo $form->getID() ?>" />
  <input class="<?php if ($form->hasError('name'))       echo 'error'?>" name="name"    type="text" value="<?php if (!$form->isProcessed()) echo sly_html($form->getValue('name')) ?>" />
  <input class="<?php if ($form->hasError('email'))      echo 'error'?>" name="email"   type="text" value="<?php if (!$form->isProcessed()) echo sly_html($form->getValue('email')) ?>" />
  <textarea class="<?php if ($form->hasError('message')) echo 'error'?>" name="message"><?php                    if (!$form->isProcessed()) echo sly_html($form->getValue('message')) ?></textarea>
  <input type="submit" />
</form>

mit Rendering

zusätzlich in der develop/forms.yml (siehe Rendering)

renderer:
  default:
    _type: form
    id: 'contact'
    fields:
      _info:     { _type: form_message, wrap: {div: status } }
      name:      { _type: text,      label: 'Name:' }
      email:     { _type: text,      label: 'E-Mail:' }
      message:   { _type: textarea,  label: 'Nachricht*:' }
      _submit:   { _type: submit,    value: 'Senden' }
<?php echo WV30_Form::getForm('contact', true)->render() ?>

Inhalt

Vorheriges Thema

Konfiguration

Nächstes Thema

API

Diese Seite