RedSpark Quickstart Tutorial
Tutorial-Überblick
- Wie geht's los? - Einleitung
- Was geht los? - Praxisbeispiel für den Einstieg
- Es geht los. - Aufsetzen des Projekts
- Es geht weiter. - Datenbank einbeziehen
Wie geht's los?
Die große Frage, die sich stets bei Software stellt, die einem (noch) nicht vertraut ist. Wie entwicklet 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 Whg. als WG oder dergleichen).
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 filesModul 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 RedSparkKontrolle
[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 filesKonfigurationen 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
ByeModels 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 RedSparkDb-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.
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.