Vierter Schritt - Das Model I

Die Übernahme der geplanten Datenstruktur ins Modul geschieht zunächst durch die Erstellung der Datenstruktur als XML Datei im Pfad
/<myapp>/RsModule/<MyModule>/Model/Xml/<MyModule>.xml


Das eben erstellte Datenmodell:

  • Frage
  • Antwort
  • Schlagwörter
  • Anzahl Abrufe

Einfach XML-Struktur

Wird zunächst in eine einfache XML Struktur übernommen:

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE formfields SYSTEM "http://www.redsparkframework.com/dtd/form_fields.dtd">

<formfields>

    <page>

    
    <id>1</id> <!-- Möglichkeit, mehrseitiger Formulare bie einseitgen Fomularen immer = 1 --> 



        <!-- Datenfelder des Formulars --> 

        <group>

            <subgroup>

                <!-- Frage -->

                <field>

                    <db_field>question</db_field>

                </field>



                <!-- Antwort -->

                <field>

                    <db_field>answer</db_field>

                </field>



                <!-- Schlagwörter -->

                <field>

                    <db_field>tags</db_field>

                </field>



                <!-- Anzahl Abrufe -->

                <field>

                    <db_field>viewcnt</db_field>

                </field>

            </subgroup>

    </page>

</formfields>

 
Anmerkung: Die komplette XML-Struktur befindet sich in kommentierter Form im Kickstart Modul.

Erweiterung um Datenbankinformationen

Zur Speicherung und Darstellung der Datenfelder in der Datenbank bieten sich einige weitere Felder zur besseren Verwaltung der Daten an:

  • id -> Eindeutiger Bezeichner, zwingend erforderlich
  • enabled -> Standardfeld zur Aktivierung und Deaktivierung eines Datensatzes
  • fk_account -> RedSpark bietet das Konzept des Multi-Accountings (auch wenn in RedSparkCore nicht zur Bearbeitung implementiert). Durch anlegen dieses Feldes funktioniert das Modul auch in Apps mit einer Accountverwaltung
  • insertDate -> Automatische Speicherung des Erstellzeitpunktes des Datensatzes
  • changeDate -> Automatische Speicherung des letzten Bearbeitungszeitpunktes des Datensatzes

Die Datenfelder sollten als eigene Gruppe in die XML Struktur übernommen werden:


<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE formfields SYSTEM "http://www.redsparkframework.com/dtd/form_fields.dtd">

<formfields>

    <page>

    
    <id>1</id> <!-- Möglichkeit, mehrseitiger Formulare bie einseitgen Fomularen immer = 1 --> 



        <!-- Datenfelder zur Verwaltung der Datenbank -->

        <group>

            <subgroup>

                <field>

                    <db_field>id</db_field>

                </field>

                <field>

                    <db_field>enabled</db_field>

                </field>

                <field>

                    <db_field>fk_account</db_field>

                </field>

                <field>

                    <db_field>insertDate</db_field>

                </field>

                <field>

                    <db_field>changeDate</db_field>

                </field>

            </subgroup>

        </group>



        <!-- Datenfelder des Formulars --> 

        <group>

            <subgroup>

                <!-- Frage -->

                <field>

                    <db_field>question</db_field>

                </field>



                <!-- Antwort -->

                <field>

                    <db_field>answer</db_field>

                </field>



                <!-- Schlagwörter -->

                <field>

                    <db_field>tags</db_field>

                </field>



                <!-- Anzahl Abrufe -->

                <field>

                    <db_field>viewcnt</db_field>

                </field>

            </subgroup>

        </group>

    </page>

</formfields>


DDL - Data Definition Language

Im nächsten Schritt fügen wir der XML-Struktur die Datenbankstruktur der einzelnen Felder hinzu. Zusätzlich kann für Felder, die nur in der Datenbank und nicht im Formular angezeigt werden sollen, das Flag "database_only" vergeben werden:


<?xml version='1.0' encoding='UTF-8'?>
  
  <!DOCTYPE formfields SYSTEM "http://www.redsparkframework.com/dtd/form_fields.dtd">
  
  <formfields>
  
      <page>
  
      
    <id>1</id> <!-- Möglichkeit, mehrseitiger Formulare bie einseitgen Fomularen immer = 1 --> 
  

  
        <!-- Datenfelder zur Verwaltung der Datenbank -->
  
          <group>
  
              <subgroup>
  
                  <field>
  
                      <db_field>id</db_field>
  
                      <db_definition>int(12) NOT NULL auto_increment</db_definition>
  
                      <database_only>TRUE</database_only>
  
                  </field>
  
                  <field>
  
                      <db_field>enabled</db_field>
  
                      <db_definition>enum('Y','N') default 'N'</db_definition>
  
                      <database_only>TRUE</database_only>
  
                  </field>
  
                  <field>
  
                      <db_field>fk_account</db_field>
  
                      <db_definition>int(12) default '0'</db_definition>
  
                      <database_only>TRUE</database_only>
  
                  </field>
  
                  <field>
  
                      <db_field>insertDate</db_field>
  
                      <db_definition>datetime NOT NULL default '0000-00-00 00:00:00'</db_definition>
  
                      <database_only>TRUE</database_only>
  
                  </field>
  
                  <field>
  
                      <db_field>changeDate</db_field>
  
                      <db_definition>datetime NOT NULL default '0000-00-00 00:00:00'</db_definition>
  
                      <database_only>TRUE</database_only>
  
                  </field>
  
              </subgroup>
  
          </group>
  
  
  
          <!-- Datenfelder des Formulars --> 
  
          <group>
  
              <subgroup>
  
                  <!-- Frage -->
  
                  <field>
  
                      <db_field>question</db_field>
  
                      <db_definition>varchar(255) default NULL</db_definition>
  
                  </field>
  
  
  
                  <!-- Antwort -->
  
                  <field>
  
                      <db_field>answer</db_field>
  
                      <db_definition>text</db_definition>
  
                  </field>
  
  
  
                  <!-- Schlagwörter -->
  
                  <field>
  
                      <db_field>tags</db_field>
  
                      <db_definition>varchar(255) default NULL</db_definition>
  
                  </field>
  
  
  
                  <!-- Anzahl Abrufe -->
  
                  <field>
  
                      <db_field>viewcnt</db_field>
  
                      <db_definition>int(12) default '0'</db_definition>
  
                  </field>
  
              </subgroup>
  
          </group>
  
      </page>
  
  </formfields>


Texte und Feldtypen

Das Einzige, was für eine erste Basisversion des Model-XML noch fehlt, sind die Feldbezeichner und optional die Feldtypen. Diese werden über das Tag <eingabe_name> bzw. <form_type> unterhalb von <field> eingefügt:


<?xml version='1.0' encoding='UTF-8'?>
    
  <!DOCTYPE formfields SYSTEM "http://www.redsparkframework.com/dtd/form_fields.dtd">
    
  <formfields>
    
      <page>
    
        
    <id>1</id> <!-- Möglichkeit, mehrseitiger Formulare bie einseitgen Fomularen immer = 1 --> 
    

    
        <!-- Bilder und Texte, die bei der Ein- und Ausgabe angezeigt werden -->
    
            <headline_image>faq.gif</headline_image>
    
            
    
            <!-- Headline und Subheadline für die Neues-Element Ansicht im Backend -->
    
            <headline_insert><![CDATA[Create headline]]></headline_insert>
    
            <headline_text_insert><![CDATA[Create text]]></headline_text_insert>
    
            
    
            <!-- Headline und Subheadline für die Bearbeitungsansicht im Backend -->
    
            <headline_update><![CDATA[Edit headline]]></headline_update>
    
            <headline_text_update><![CDATA[Edit text]]></headline_text_update>
    
    
    
            <!-- Headline und Subheadline für die Detailansicht im Backend -->
    
            <headline_show><![CDATA[List headline]]></headline_show>
    
            <headline_text_show><![CDATA[List text]]></headline_text_show>
    
    
    
            <!-- Datenfelder zur Verwaltung der Datenbank -->
    
          <group>
    
              <subgroup>
    
                  <field>
    
                      <db_field>id</db_field>
    
                      <db_definition>int(12) NOT NULL auto_increment</db_definition>
    
                    <database_only>TRUE</database_only>
    
                </field>
    
                  <field>
    
                      <db_field>enabled</db_field>
    
                      <db_definition>enum('Y','N') default 'N'</db_definition>
    
                      <database_only>TRUE</database_only>
    
                  </field>
    
                  <field>
    
                      <db_field>fk_account</db_field>
    
                      <db_definition>int(12) default '0'</db_definition>
    
                      <database_only>TRUE</database_only>
    
                  </field>
    
                  <field>
    
                      <db_field>insertDate</db_field>
    
                      <db_definition>datetime NOT NULL default '0000-00-00 00:00:00'</db_definition>
    
                      <database_only>TRUE</database_only>
    
                  </field>
    
                  <field>
    
                      <db_field>changeDate</db_field>
    
                      <db_definition>datetime NOT NULL default '0000-00-00 00:00:00'</db_definition>
    
                      <database_only>TRUE</database_only>
    
                  </field>
    
              </subgroup>
    
          </group>
    
  
    
          <!-- Datenfelder des Formulars --> 
    
          <group>
    
              <subgroup>
    
                  <!-- Frage -->
    
                  <field>
    
                        <eingabe_name>M_FAQ_FIELD_QUESTION</eingabe_name>
    
                        <db_field>question</db_field>
    
                      <db_definition>varchar(255) default NULL</db_definition>
    
                  </field>
    
  
    
                  <!-- Antwort -->
    
                  <field>
    
                      <eingabe_name>M_FAQ_FIELD_ANSWER</eingabe_name>
    
                    <db_field>answer</db_field>
    
                      <db_definition>text</db_definition>
    
                      <form_type>textarea</form_type>
    
                  </field>
    
  
    
                  <!-- Schlagwörter -->
    
                  <field>
    
                      <eingabe_name>M_FAQ_FIELD_TAGS</eingabe_name>
    
                    <db_field>tags</db_field>
    
                      <db_definition>varchar(255) default NULL</db_definition>
    
                  </field>
    
  
    
                  <!-- Anzahl Abrufe -->
    
                  <field>
    
                      <eingabe_name>M_FAQ_FIELD_VIEWCNT</eingabe_name>
    
                    <db_field>viewcnt</db_field>
    
                      <db_definition>int(12) default '0'</db_definition>
    
                  </field>
    
              </subgroup>
    
          </group>
    
      </page>
    
  </formfields>

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