[TYPO3-german] Frontend Edit für eigene Extension

Bernd Wilke xoonsji02 at sneakemail.com
Sun Mar 19 18:20:41 CET 2006


On Sat, 18 Mar 2006 23:21:14 +0100, Matthias Walker wrote:

> Hallo Liste,
> 
> ich steh gerade ziemlich wie "der Ochs vorm Berg" :-)

hauptsache nicht stehen bleiben ;-)
 
> ich hab für unsere Vereins-HP eine Extension geschrieben um einige 
> Athleten mit einem Profil zu präsentieren. Da ich noch ein ziemlicher 
> Anfänger bin, hab ich mich bei der Erstellung geschickterweise am "Basic 
> Extension Tutorial" orientiert und die dortige Ext: player_profile_basic 
> nach meinen Wünschen angepasst. (Großes Dankeschön dabei an Oliver 
> Hofmann für die Erstellung des Tut!!). Meine Ext funktioniert soweit 
> auch ohne weiteres.

das ist doch schon ein gutes Zeichen.
 
> Hier nun mein Problem: ich würde das Ganze als FE-Edting anbieten 
> wollen, d.h. jeder Athlet soll sein eigenes Profil im FE ändern können. 
> Könnt ihr mir dabei weiterhelfen, wie ich das am geschicktesten/besten 
> umsetzen kann?
> (Da ich mich "nur" mit den Basics auskenne, fehlt mir vielleicht auch 
> etwas der Überblick...)

meine Ideen dazu:

du brauchst ein Formular, in dem der Spieler seine Daten ändern kann.
- das kannst du 'hardcoded' aus der Extension heraus generieren (dann aber
unbedingt viele Klassen definieren, um das Layout des Formulars bei Bedarf
ändern zu können ohne die Extension zu ändern)
- oder du nutzt eine Vorlage mit Platzhaltern
	$this->cObj->fileResource($conf["templateFile"])
	$this->cObj->substituteMarkerArray(..,..);

damit du nicht in Konflikt mit anderen Extensions mit Formular kommst
solltest du folgenden Namensmechanismus für deine Eingabefelder nutzen:

$inp='<input name="'.$this->prefixId.'[f1]" value="..." class="..." />'

$this->prefixId ist der eindeutge Name deines Plugins (tx_EXTENSION_pi1)
deine gesamten Formulareingaben bekommst du dann mit:
	$formadata=$t3lib_div::GPVar($this->prefixId);



damit nur der Spieler seine Daten ändern kann brauchst du eine
Identifizierung. Die wird in Typo3 typischerweise mit FE-User realisiert.
Login, Logout, ...
Jetzt müssen deine Daten mit nur einem FE-User verknüpft werden.
Entweder deine Daten sind die (erweiterten) Daten der Tabelle fe_users,
oder du hast eine neue Tabelle, in der du dann eine Verknüpfung zu fe_users
eingebunden hast. Diese Verknüpfung muss natürlich bei der Anlage des
Datensatzes im BE gefüllt werden.

der schematische Aufbnau deiner Extension:

als erstes überprüfen:
($userdata=$GLOBALS['TSFE']->fe_user->user)
ist ein User angemeldet? = ist $userdata['uid'] mit Daten gefüllt? 
wenn ja: hole Datensatz, der dazu gehört SELECT * FROM ... WHERE
referenz=$userdata['uid']
wenn nein: fehlermeldung ausgeben und beenden.

[1]

Lese Datensatz aus Datenbank ein
($GLOBALS['TYPO3']->exec_SELECTgetRows($fields,$table,$where))
und zeige das Formular mit den Daten an (s.o.)

fertig!

d.h. noch werden die Formulardaten ja gar nicht gespeichert.
dazu fügst du unter [1] in deiner Extension noch eine Abfrage ein, ob der
Datensatz gerade abgeschickt wurde.  z.b.: if ($formdata['submit']) 

wenn ja: überprüfe auf korrekte Daten.
alles korrekt: speichere die Daten in der Datenbank,
($GLOBALS['TYPO3']->exec_UPDATEquery($table,$where,$updatearray))
	gib Erfolgsmeldung aus. weiter wieder mit Formular oder beenden.
wenn nein: Fehlermeldung ausgeben und Eingaben korrigiert in Formular
eintragen.



ich hoffe das ist ausführlich genug und du hast jetzt alle Hinweise auf die
Funktionen und Variablen, die du dabei brauchst.

viel Spaß
Bernd Wilke

  


-- 
----------------
Bernd Wilke     
Annweilerstr.20 
40229 Düsseldorf
0211/229 2800



More information about the TYPO3-german mailing list