RedSpark Quickstart Tutorial

Tutorial-Überblick

  1. Wie geht's los? - Einleitung
  2. Was geht los? - Praxisbeispiel für den Einstieg
  3. Es geht los. - Aufsetzen des Projekts
    1. Applikation anlegen
    2. Modul anlegen
    3. Konfigurationen anpassen
    4. Checkpoint 1: App-Modul in Backend prüfen
  4. Es geht weiter. - Datenbank einbeziehen
    1. DB-Struktur anlegen
    2. Models anlegen
    3. DB-Struktur aktualisieren
    4. Checkpoint 2: CRUD-L Actions in Backend prüfen



Wie geht's los?

Das ist die große Frage, die sich stets bei Software stellt, die einem (noch) nicht vertraut ist. Wie entwickelt man mit RedSpark eigene Applikationen? Wir werden Ihnen hier einen Ansatz zeigen.

Vorbemerkungen

Das vorliegende Quickstart-Tutorial setzt Folgendes voraus: Die Installation und Einrichtung von RedSpark sind abgeschlossen, die Schritte im Webfrontend des RedSparkInstallers sind geschafft, die mitgelieferte Kickstart-Applikation konnte ebenso gebootet werden.

Darüber hinaus werden in diesem Einstiegs-Tutorial Scaffolding-Skripte über ein Terminal gestartet. Dies bedingt die Verwendung eines Unix-basierten Betriebssystems. Unter Windows können diese Skripte nur aufwändig bis gar nicht gestartet werden. Stattdessen ist vorgesehen, diese Scaffolding-Skripte mittelfristig mit Webansichten in der RedSparkInstaller-App zu ergänzen. Bis dahin sind die folgend beschriebenen Vorgänge unter Windows manuell durchzuführen.




Was geht los?

Lassen Sie uns davon ausgehen, die zu erstellende Applikation sei eine einfache Freundes- und Bekanntenliste mit der Möglichkeit, Adressen aller gespeicherten Personen zu verwalten. Folgende Anforderungen ermitteln wir im Vorhinein:

  • Es gibt Personen.
  • Es gibt Adressen.
  • Eine Person kann mehrere Wohnsitze haben (oder zumindest über mehrere Adressen postalisch erreichbar sein, z.B. über die Adresse des Arbeitgebers, der Eltern etc.).
  • Mehrere Personen können sich eine gemeinsame Adresse teilen (z.B. im selben Haus oder gar in der selben Wohnung als WG oder dergleichen wohnen).

Das ERM, welches sich dabei gedanklich erschließt, behalten wir zunächst im Hinterkopf und kommen später beim Generieren der Datenbank-Models darauf zurück.




Es geht los.

Um Ihre Applikation zu entwickeln, legen Sie diese zunächst an.

Applikation anlegen

Der RedSparkInstaller bietet ein PHP-Skript an, welches das Scaffolding der Applikation automatisiert. Damit werden also Default-Verzeichnisstrukturen und Dateien generiert. Für den Applikationsnamen wählen wir 'FamilyAndFriends'.

Scaffolding
[kuborgh@kb projects]$ cd redspark/application/
[kuborgh@kb application]$ php RedSparkInstaller/latest/redspark_app_clone.php

This will create an empty RedSpark Application from a standard draft.


Please enter the name of your new Application in CamelCase
[default: MyApp]
FamilyAndFriends
Application folder not found. If you plan to use svn, you should checkout the folder first:
svn co http:///trunk /home/kuborgh/projects/redspark/application/FamilyAndFriends/latest/

Continue anyway?
[default: Y]
Y
done
Application data folder not found. If you plan to use svn, you should checkout the folder first:
svn co http:///data /home/kuborgh/projects/redspark/application/FamilyAndFriends/data/

Continue anyway?
[default: Y]
Y
done

Ready for install. Press any key to continue

Creating folders.....done
Checking out Draft Frontcontroller......done
Checking out Draft config......done
Checking out Draft db...done


Your Application FamilyAndFriends has been created successfully.
Thank you for using RedSpark

Kontrolle
[kuborgh@kb application]$ tree FamilyAndFriends/latest/
FamilyAndFriends/latest/
|-- configs
| `-- config.ini
|-- FamilyAndFriends
| |-- Controller
| | `-- Front.php
| `-- RsModule
`-- templates

5 directories, 2 files

Modul anlegen

Auch für das Scaffolding der Modul-Strukturen hält der RedSparkInstaller ein Skript bereit. Das Modul nennen wir 'PersonManagement'.

Scaffolding
[kuborgh@kb application]$ php RedSparkInstaller/latest/redspark_module_create.php

This will create an empty RedSpark module structure.


Please enter the Path to your Application (including version)
[default: /home/kuborgh/projects/redspark/application/MyApp/latest]
/home/kuborgh/projects/redspark/application/FamilyAndFriends/latest

Please enter the name of your module
[default: MyModule]
PersonManagement
Creating Folders...done
Creating Controller......done
Creating Rights......done


Your Module PersonManagement has been created successfully.
Thank you for using RedSpark

Kontrolle
[kuborgh@kb application]$ tree FamilyAndFriends/latest/FamilyAndFriends/RsModule/
FamilyAndFriends/latest/FamilyAndFriends/RsModule/
`-- PersonManagement
|-- Config
| `-- PersonManagementRights.xml
|-- Controller
| |-- Action
| `-- Controller.php
|-- Doc
|-- Model
| |-- DataHandler
| |-- Dataobject
| `-- Xml
`-- View

10 directories, 2 files

Konfigurationen anpassen

Die Applikation ist angelegt, ein Modul ebenso. Nun gilt es, die Konfigurationen ein wenig umzubiegen.

Bootstrapping

Damit die soeben angelegte Applikation im Browser erreichbar ist, passen wir das Bootstrapping an.

[kuborgh@kb application]$ vim ../config/bootstrap.ini
[Bootstrap]
site_is_live = ""
throw_warning = "1"

[Domains]
default = "FamilyAndFriends/latest"

Applikationskonfiguration

Ehe das neue Modul verwendet werden kann, aktivieren wir es in der Konfiguration der Applikation. Suchen Sie in der Konfigurationsdatei nach dem Abschnitt 'Modules', dort ergänzen Sie lediglich eine Zeile.

[kuborgh@kb application]$ vim FamilyAndFriends/latest/configs/config.ini
...
[Modules]
...
InstalledModules.PersonManagement = FamilyAndFriends
...

Checkpoint 1: App-Modul in Backend prüfen

Geben Sie nun im Browser die URL Ihrer lokalen Webserverumgebung an. Ist das der erste Request an Ihre Applikation, so werden Sie automatisch zum Login weitergeleitet. Authentifizieren Sie sich mit Benutzername|Passwort: admin|admin

Nach Login landen Sie im Wartungsbereich der Admin-Oberfläche. Unter Anderem wird zu diesem Zeitpunkt die Datenbank automatisch angelegt. Im Backend sollte sich in der oberen Navigationsleiste nun das Menü "PersonManagement" befinden mit den beiden Unterpunkten "Übersetzung" und "Dokumentation". So weit so gut.




Es geht weiter.

Das Grundgerüst steht nun. Erinnern wir uns an dieser Stelle kurz an die Anforderunen an das PersonManagement unserer FamilyAndfriends-Applikation. Man muss kein Datenbank-Guru sein, um sich für das folgend grob skizzierte Datenbank-Modell zu entscheiden.

  • person
    • id
    • first_name
    • last_name
  • address
    • id
    • street
    • number
    • zip_code
    • city
  • person_has_address
    • fk_person
    • fk_address

DB-Struktur anlegen

Legen Sie die Tabellen in einem SQL-Client Ihrer Wahl an (SQuirreL, phpMyAdmin etc.) oder nutzen sie das Terminal.

Der Einfachheit halber können Sie ID- und Timestamp-Felder einfach weglassen. Diese können später beim Generieren der DB-Models automatisch angelegt werden.

Um Namenskonflikte zu vermeiden, bietet es sich an, den neuen Tabellen einen Präfix zu verleihen. Am besten eignet sich hierfür der Name der Applikation, wir verwenden daher 'familyandfriends_'.

Terminal
[kuborgh@kb application]$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.5.12 MySQL Community Server (GPL) by Remi

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use application_familyandfriends;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> create table familyandfriends_person (first_name varchar(56), last_name varchar(56));
Query OK, 0 rows affected (0.09 sec)

mysql> create table familyandfriends_address (street varchar(56), number int, zip_code int, city varchar(56));
Query OK, 0 rows affected (0.11 sec)

mysql> create table familyandfriends_person_has_address (fk_person int, fk_address int);
Query OK, 0 rows affected (0.14 sec)

mysql> \q
Bye

Models anlegen

Auch für das Generieren der Models und der CRUD[L] Actions stellt der RedSparkInstaller ein Skript zur Verfügung.

Scaffolding
[kuborgh@kb application]$ php RedSparkInstaller/latest/redspark_model_create.php

This will create an empty RedSpark model incl. CRUD(L), based on an existing Database Table.


Please enter the name of your application
[default: FamilyAndFriends]
FamilyAndFriends

Please enter the name of your module
[default: MyModule]
PersonManagement

Please enter the name of your model in CamelCase
[default: MyModel]
Person

Please enter the name of the database table
[default: redspark_person]
familyandfriends_person

Missing standard field id
Automaticaly create?
[default: Y]
Y

Missing standard field insertDate
Automaticaly create?
[default: Y]
Y

Missing standard field changeDate
Automaticaly create?
[default: Y]
Y

Missing standard field fk_account
Automaticaly create?
[default: Y]
Y

Do you want to create a feed, too?
[default: Y]
N

Ready for creation. Press any key to continue

Creating XML...done
Creating Model......done
Creating Dataobject......done
Creating DataHandler......done
Creating CRUD(L):
Create......done
Read......done
Update......done
Delete......done
List......done
Updating backend menu...done
Updating rights...done


Your Model has been created successfully.

Another table? [Y,N]
[default: N]
Y

...

Thank you for using RedSpark

Db-Struktur aktualisieren

Klicken Sie im Browser im noch geöffneten Backend unter System > Wartung beim Punkt Datenbankstruktur aktualisieren auf LOS. Die Änderungen werden automatisch auf die DB übertragen.

Checkpoint 2: CRUD-L Actions in Backend prüfen

Rufen Sie ihr Backend erneut auf, ergänzen Sie in der URL die beiden GET-Parameter cache=0 und purgeCache=all. Damit umgehen Sie den Cache-Speicher von RedSpark und löschen ihn sogleich, damit er neu aufgebaut wird.

<url>/redaktion?cache=0&purgeCache=all

Das ist nötig, da auch das Navigationsmenü aus dem Cache-Speicher geladen wird. Ist das Backend anschließend neu geladen, werden Sie unterhalb des Menüs 'PersonManagement' Einträge zum Auflisten und Hinzufügen von Personen und Adressen finden.

Herzlichen Glückwunsch. Sie haben mit RedSpark soeben ihre erste Applikation angelegt, ein Modul erzeugt, letzteres mit DB-Models gefüllt und CRUD[L]-Actions in das Menü Ihres Moduls hinzugefügt.

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