Einfaches Formular erstellen

Die Grundvoraussetzung für die Erstellung eines Formulars ist ein Model mit zugehörigem XML und die entsprechende Action (Create oder Update)

Grundlegendes


Im RedSparkFramework gibt es zwei grundlegend unterschiedliche Arten, Formulare zu generieren.
  1. Via RsForm_Handler (nicht so flexibel, aber voll implementiert)
  2. Via Zend_Form (WiP)

Genereller Ablauf Zend_Form


Um die Action so umzustellen, dass die Zend_Form benutzt, genügt ein init option:
parent::INIT_OPTIONS_USE_ZEND_FORM    => true,

damit laufen dann folgende Schritte ab:
  1. Das XML wird geladen via $this->_getStructureXml();
  2. Das XML wird nach Zend_Form konvertiert mithilfe von $this->_getZendForm($xml);
  3. Das Zend_Form Objekt wird als Smarty assign zur Verfügung gestellt, oder direkt gerendert, wenn kein Snippet existiert

Ausgabe des Zend_Form Formulars


Durch die Nutzung von Zend_Form ist es möglich das Formular sowohl vollständig auto-generiert, mit manuellem Markup oder einem Mix aus beidem auszugeben.

Im folgenden sind verschiedene Smarty Snippets zu sehen, die das gleiche Formular auf andere Art und Weise ausgeben:
{* Completely render the form via zend *}
{$form->render()}


{* Render only the first subgroup *}
<form action="{$form->getAction()}">
    {$form->group_0->render()}
</form>


{*Iterate over elements and render them *}
<form action="{$form->getAction()}">
{foreach from=$form->getElements() item="element"}
    {$element->render()}
{/foreach}
</form>


{*manually render all elements*}
<form action="{$form->getAction()}">
{foreach from=$form->getElements() item="element"}
    {if ($element instanceof Zend_Form_Element_Submit)}
        <input type="submit" value="{$element->getLabel()}" /><br />
    {else}
        {$element->getLabel()}: <input type="text" name="{$element->getName()}" value="{$form->isbn->getValue()}" /><br />
    {/if} 
{/foreach}
</form>


{*manually render custom elements*}
<form action="{$form->getAction()}">
    {$form->isbn->getLabel()}: <input type="text" name="{$form->isbn->getName()}" value="{$form->isbn->getValue()}" /><br /> 
    {$form->title->getLabel()}: <input type="text" name="{$form->title->getName()}" /><br /> 
    <input type="submit" value="save" />
</form>


Kuborgh GmbH

Hamburg 040 819 773 770 Köln 0221 276 66 96 info@kuborgh.de www.kuborgh.de

RedSpark Community

RedSpark Community

Community Website
RedSpark Apps

RedSpark Apps

Zur Übersicht
RedSpark Download

RedSpark Basispaket

Zum Download
Key facts