[TYPO3-german] Ajax handling

Chris Wolff - AERTiCKET AG cwolff at aer.de
Tue Jul 21 09:00:26 CEST 2015


Hallo Benjamin,
ich würde auch dafür Plädieren das ganze als XML zu machen. die browser können gut mit HTML / XML umgehen.
Und es breitet deutlich weniger probleme weil du dich eben nicht ums doppelte encoding kümmern musst.

Helmut Hummel hat mit der extension typoscript_render eine extension geschrieben die es erlaubt einzelen "typoscript" pfade zu rendern.
https://github.com/helhum/typoscript_rendering

Dokumentation ist leider noch etwas dünn. Aber vielleicht ist das ja im Rahmen deiner Lösung interessant.

Gruss chris

-----Ursprüngliche Nachricht-----
Von: typo3-german-bounces at lists.typo3.org [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Dr Dieter Porth
Gesendet: Montag, 20. Juli 2015 21:38
An: Benjamin Giesbrecht; German TYPO3 Userlist
Betreff: Re: [TYPO3-german] Ajax handling

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/

_______________________________________________
TYPO3-german mailing list
TYPO3-german at lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german


More information about the TYPO3-german mailing list