[TYPO3-german] Ajax handling

Dr Dieter Porth typo3 at mobger.de
Mon Jul 20 21:37:43 CEST 2015


Hi Benjamin,

ich render bei meiner Seite die Seiteninhalte über den Type-Num-Weg in
ein Fluid-Template für ein XML-Konstrukt.
Ich habe dafür in Javascript einen Request-Handler geschrieben, der auch
die parallele Aktivierung von mehreren AJAX-Request ermöglicht. Bei mir
basiert die Struktur auf XML-Basis, wobei ich neben dem HTML-Fragment
auch die Links zu Javascript-Code und CSS-Dateien übergebe und
gegebenefalls sogar noch eigene Parameter mitübergeben. der Weg hat den
Vorteil, dass jedes Content-Objekt als autonom begriffen wird. Der Weg
hat den Nachteil, dass die Lösung kompliziert ist, weil zum Beispiel so
manche Klassendefinition aus den Constanten einerseits in das zu
generierende Javascript und andererseits in den zu generierenden
HTML-Code übertragen werden muss.
Nachteilig an meiner Lösung ist auch:
1. Die Nummernvergabe für die Ajax-Prozesse ist bislang in den
Konstanten er folgt und nicht über die Datenbank automatisch definiert wird.
2. Bislang fehlt mir noch eine einfachen Lösung, um auch ein
JavaScript-Template mit TYPO3 zu bearbeiten. Leider kann man die
geschweiften Klammern für den Fluid-Inline-Code nicht durch eine
alternative Klammerung (zum Beispiel «...») ersetzen, so dass das
Templating von Javascript mit TYPO3-Fluid nicht zum Lese-Horror wird.
3. Mein Lösung enthählt keine Schnittstelle zu AngularJS, weil ich das
AngularJS bislang nicht hinreichend gut verstanden haben.

Dein Weg ist vielleicht auch optimierungfähig, weil die Wahl des Layouts
bei identischen Template eher im Template stattfinden sollte
Ich schalte beispielsweise zwischen mobilen und normalen Layout um,
indem ich im Template das Layout per Varaible definieren. Das dynamisch
gewählte Layout bestimmt dann, welche Sections aus dem Template es
braucht, um sich selbst zu füllen. Im meinem Template definiere ich also
einmalig die Sections, die ich in mindestens einem Layout brauche.
Statt deiner CASE-Anweisung könntest du im TYPOScript beim FLUIDTEMPLATE
nur schreiben.
...
varibales
    libFlagDevice = TEXT
    libFlagDevice.data = TSFE:pages|backend_layout  (ungetestet)
...
und im Template selbst 
<f:layout name="DefaultLayout{libFlagDevice}" />
und schon hast du deine Umschaltung zu den  Layouts
DefaultLayout1.html, DefaultLayout2.httml, ...

Unter XML ist beim Rendern vom HTML darauf zu achten, dass man den
HTML-Code in CDATA verpackt und vorhandenes CDATA maskiert. Ich habe das
Problem mit Typoscript gelöst, aber der PHP-Weg ist sicher effizienter.

Dieter

P.S. Da du nicht schreibst, welche Bewertungskriterien und welche
Rahmenbedingungen du zugrunde legst, wird dir wohl keiner raten können,
was der beste Weg ist.  Vielleicht ist ja auch der beste Weg, die Seite
vom Javascript generieren zu lassen und nur die rohen Daten zu übergeben.


Am 20.7.2015 um 15:19 schrieb Benjamin Giesbrecht:
> Hei Chris,
>
> Hab mir noch gedacht dass ich einen Denkfehler mache.
> Ich möchte eine Art Ajax Protokoll erstellen. Mit anderen Worten ein
> JSON Array welches ein Konfigurations-Teil und ein Nutzdaten-Teil hat.
> Dieses Array könnte man in einem Fluid-Template abfüllen und dem
> JS-Ajax-Handler ausliefern. Mit dem Konfigurations-Teil könnte man dem
> Ajax-Handler zum Beispiel mitteilen wo und auf welche Art und Weise er
> den Nutzdaten-Teil (HTML) platzieren soll.
>
> Mein Ansatz ist so dass ich das JSON Array in einem Fluid-Template,
> resp. Layout zusammenbaue und dann den Nutzdatenteil durch eine
> json_encode Funktion jage. Das scheint aber offensichtlich nicht ganz
> zu funktionieren.
> Hast du eine Idee wie man das am besten umsetzen könnte? Oder macht es
> mehr Sinn solche Daten mit dem Link welcher den Ajax-Handler aufruft
> zu übergeben?
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german


-- 
Dr. Dieter Porth - 
Mein kleines TYPO3-Labor: http://www.mobger.de/



More information about the TYPO3-german mailing list