Ein individuelles Formular im Backend

Neben den häufig verwendeten CRUD Formularen, welche auf einem Model mit zugehörigem XML basieren, ist es sehr einfach, individuelle Formulare auf Basis von RsForm zu erstellen.

Kickstart Action als Basis

Wie gewohnt bietet die RedSparkKickstart App auch für diese Art von Formularen eine Referenzimplementierung. Die Action RedSparkKickstart_RsModule_Kickstart_Controller_Action_CustomForm bietet ein Formular zum Upload und Import einer CSV Datei.

Default Subaction

Üblicherweise übernimmt die defaultSubaction() die Formularausgabe, die Speicherung erfolgt in einer saveSubaction(), die nach erfolgreicher Speicherung eine Weiterleitung durchführt und eine Meldung ausgibt.

Der Aufbau des Formulars beginnt mit der Befüllung eines Form-Arrays, üblicherweise beginnend mit dem Formularkopf, gefolgt von Fieldsets zur Gruppierung der Eingabeelemente und schließlich den Buttons zum absenden oder abbrechen.

<?php

     
/**
      * Default subaction to show 
      */
     
protected function defaultSubaction(){
    
     $form_array = array();
    
     $form_array[] = array($this->_('Import'),$this->_('Import data from csv file'),"header","site.gif");
     
    
     $form_array[] = array('',"","startfieldset","");
    
     $form_array[] = array($this->_('Choose File'),"csv","file",$this->_request->getParam('csv',''));
    
     $form_array[] = array("<none>","","endfieldset","");
    
    
    $form_array[] = array("","","submit_buttons",array(
    
        array(Redspark_RsForm_Handler::TYPE_CANCEL),
    
        array(Redspark_RsForm_Handler::TYPE_SAVE)        
    
        )); 
      
    
    $this->assignForm($form_array,'save');
    
     $this->_rendertype 
?>


Eine komplette Liste der Formelemente befindet sich derzeit unten auf dieser Seite im Aufbau.

Init Methode

Die init Methode dient sowohl für die Formularanzeige, als auch für die Speicherung dazu, die Parameter aufzubereiten. Für jeden zu speichernden Parameter sollte die Actionklasse eine entsprechende protected Variable vorhalten, die aus dem Request gefüllt wird: $this->_myvar = $this->_request->getParam('myvar',''); Besonders angenehm ist die Möglichkeit zur Übergabe eines Default Wertes, durch Aufruf in der init Methode ist es damit sicher gestellt, dass die Parameter sowohl vor Ausgabe des Formulars, als auch vor der Speicherung an einer zentralen Stelle initialisiert werden.

Die init Methode eignet sich nicht in jedem Fall zur Initialisierung des Models, da dieses meist nur in der Save Subaction benötigt wird und entsprechende auch nur dort instanziert werden sollte.

<?php

class     
        RedSparkKickstart_RsModule_Kickstart_Controller_Action_CustomForm
    
extends
    
    Redspark_RsModule_Abstract_Controller_Action
    
{
    
/**
     * @var int
     */
    
protected $_limit 200;
    
    
 /**
     
    * Generic init method for all subactions. Set attribs from request here!
     
    */
    
protected function init() {
    
    ini_set('max_execution_time'60);
    
    $this->_limit $this->_request->getParam('limit',$this->_limit);
    
    return parent::init();    
    
}
    
    
    ....

?>


Save Subaction

Die saveSubaction() übernimmt die Speicherung. In der Regel wird eine Modelinstanz gebildet und die Parameter darin gespeichert. Eigentlicher Vorteil freier Formulare, im Gegensatz zu CRUD Actions ist aber die Flexibilität beim Aufbau der Formulare, aber auch bei der Verarbeitung der Daten beim speichern. In der Regel passiert also eine Menge mehr, als ein einfacher Speichervorgang, dafür wären die CRUD Actions meist besser geeignet.



Liste der Formularelemente für RsForm


Die Formularelemente sind alle nach ähnlichem Schema aufgebaut.

In der Regel werden Texte, wie Legende und Infotext, der Typ und natürlich die Daten angegeben.


    $form_array[] = array(<Legend>,<Infotext>,<Typ>,<Daten>);
     


Grundlegend gehört zu jedem übergreifenden Datentyp eine Klasse, wie zum Beispiel RedSparkCore_RsForm_Element_Fieldset, für die Datenverarbeitung, sowie ein Template z.B. /templates/kb_fallback/modules/forms/<Ausgabetyp, meist "div">/<Formelement>.<Theme, meist "default">.tpl zur Ausgabe.

Anbei die Liste der häufig verwendeten Formularelemente:

Header

Der Header bildet den Kopf eines Formulars und gibt Head- und Subline aus. Das Icon wird im aktuellen RedSpark Backend nicht genutzt.


     $form_array[] = array(<Headline>,<Subline>,"header",<Icon.gif>);
     


Fieldset

Der Header bildet den Kopf eines Formulars und gibt Head- und Subline aus. Das Icon wird im aktuellen RedSpark Backend nicht genutzt.


    $form_array[] = array('<Legend>',"","startfieldset","<Infotext zur Anzeige als Post-It>");
    $form_array[] = array('<none>',"","endfieldset","");


Weitere Formularelemente

Alle Formularelemente, die hier noch nicht aufgeführt sind, lassen 1) im Template Verzeichnis unter /templates/kb_fallback/modules/forms/ finden. Die Aufrufsyntax ist dann über die jeweilige Formularklasse RedSparkCore_RsForm_Element_* zu finden.

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