Hallo Stephan,
vielen Dank für deine ausführliche Antwort!
Bzgl. Methode 2, also mit der Extension typoscript_rendering:
Den Link mit dem ViewHelper erzeugen und per Ajax versenden, aber eben
nicht als GET sondern als POST, somit kann ich beliebig Werte aus der
Seite (z.B. aus einem Formular) mit an den Request anhängen, weil im
Falle eines POST Request der cHash egal ist?
Hab ich das so richtig verstanden?
Schöne Grüße,
Gerd
Am 26.10.15 um 18:03 schrieb Stephan Schuler:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Hallo Gerd.
Variante 1 würde ich nur noch verwenden, wenn das AJAX wahnsinnig rudimentär
ist. Sobald eine Datenbank, TypoScript oder TypoLink im Spiel sind ist der
Aufwand ebenso wie die Fehleranfälligkeit enorm.
Die Methode 2 ist meiner Meinung nach die sinnvollere. Du musst hier eben nicht
für jeden kleinsten Ajax-Fitzel einen eigenen PageType konfigurieren sondern
gibst die AJAX-Action einfach im ViewHelper an.
Variante 3 ginge zwar auch, ist aber unnötiger Aufwand. Zumal eben jedes neue
AJAX einen neuen PageType fordert sodass der Aufwand regelmäßig mehrfach
anfällt. Schon wenn man für ein einziges AJAX-Modul unterschiedliche Actions
ansprechen möchte (z.B. wenn eine Standortsuche wahlweise eine Umkreissuche von
Ladengeschäften oder aber eine Liste mit Onlineshops zeigen soll für die es
idr. Keine Umkreissuche geben kann) erkennt man, dass der Aufwand jedes Mal
erneut anfällt.
Daher meine eindeutige Empfehlung zu Helmuts hervorragender Extension.
Wenn Dir der cHash zu schaffen macht musst Du ihn wahrscheinlich konfigurieren.
Der cHash-Mechanismus sorgt dafür, dass eine Seite mit unterschiedlichen
GET-Parameter gecacht werden kann, es dabei aber nicht möglich ist, von außen
beliebig viele Cacheeinträge zu erzwingen. Würde TYPO3 für jede URL einen
Cacheeintrag unabhängig vom cHash-Parameter anlegen würde ich mir ein Script
schreiben, das Deinen Server mit ?foo=1, ?foo=2, ?foo=3 und fortlaufend
aufruft. Das Problem sollte klar sein — entweder ist nach kurzer Zeit deine
Platte voll oder das Finden eines passenden Cacheeintrages für eine Seite
dauert dank gigantischem Datenbankindex länger als die Seite neu zu erzeugen.
Das heißt natürlich nicht, dass eine Seite keine Benutzereingaben haben darf.
Nur sollten die Benutzereingaben eben nicht in den Cache wandern sondern bei
jedem Request erneut ausgewertet werden.
In der Regel werden solche Parameter per POST übertragen, dann sind sie in
keinem Fall für den Cache relevant.
Wenn Du Daten per GET übertragen möchtest die den Cache beeinflussen musst Du
die Links per TypoLink erzeugen.
Wenn Du Daten per GET übertragen möchtest die den Cache nicht beeinflussen,
solltest Du sie vom cHash ausschließen. Hierfür gibt es die
Konfigurationsoption „cHashExcludedParameters“.
Wenn Du Daten per GET übertragen möchtest die den Cache beeinflussen und
Benutzereingaben sind … machst Du was falsch :).
http://www.typo3.net/en/install-tool/frontend-konfiguration/#cHashExcludedParameters
Ich kenne leider keine offizielle Dokumentation dafür, allerdings ist der Wert
im Install-Tool beschrieben.
Gruß,
Am [DATE] schrieb "typo3-german-boun...@lists.typo3.org im Auftrag von Gerhard
Mehsel" <[ADDRESS]>:
Hallo zusammen,
ich denke, ich habe nun alle Möglichkeiten, einen Ajax Call vom FE an
einen Controller zu senden durchprobiert. Habe TYPO3 6.2.15 im Einsatz,
soll natürlich zu gegebener Zeit aktualisert werden können. Leider hat
jede Vorgehensweise ein Problem, welches mir immer wieder zu schaffen macht:
1) Zuerst dachte ich eID mit dem AjaxDispatcher, welcher überall
kursiert (glaube der ist u.A. von Daniel Lienert). Aber der Dispatcher
initialisiert mir das TCA tw. nicht richtig => Datenbankabfragen liefern
halb-leere Objekte (uid und pid ist da, weil hardcoded, Rest ist leer).
Leider fiel das erst spät auf, aber gut.
2) Dann habe ich die Extension typoscript_rendering von Helmut Hummel
ausprobiert, läuft toll, hier kann man aber keine eigenen Argumente aus
der Seite per Javascript an den Request anhängen, da dann der cHash
Check fehlschlägt. Leider muss ich das aber des öfteren machen. Dann
scheint es zusätzl. noch eine Ungewißheit wegen TYPO3 7 zu geben, ob
hier der Hook, welchen Helmut verwendet, noch an der richtigen Stelle
zur Verfügung steht (habe das aber wegen cHash Problem nicht weiter
verfolgt)
3) Zu guter Letzt noch die Ajax Requests mit einem eigenen Pagetype.
Läuft auch, aber hier kommen die zusätzlichen Argumente auch nicht in
der Actionmethode an.
Ich bin jetzt so durch mit dem Zeug, dass ich nicht mehr weiß, wie es
weitergeht.
Daher die Frage:
Wie werden am besten Ajax Calls vom FE aus an einen Controller gesendet?
So, dass alles zur Verfügung steht, Datenbankabfragen richtig laufen
etc. UND ich eigene beliebige Parameter per Javascript mit übergeben kann?
Oder geht das nicht, die Hoffnung stirbt zuletzt?
Schöne Grüße,
Gerd
Stephan Schuler
Web-Entwickler | netlogix Web Solutions
Telefon: +49 (911) 539909 - 0
E-Mail: stephan.schu...@netlogix.de
Web: websolutions.netlogix.de
netlogix GmbH & Co. KG
IT-Services | IT-Training | Web Solutions
Neuwieder Straße 10 | 90411 Nürnberg
Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99
E-Mail: i...@netlogix.de | Web: http://www.netlogix.de
netlogix GmbH & Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338)
Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634)
Umsatzsteuer-Identifikationsnummer: DE 233472254
Geschäftsführer: Stefan Buchta, Matthias Schmidt
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
-----BEGIN PGP SIGNATURE-----
Version: PGP Universal 3.3.2 (Build 15917)
Charset: utf-8
wpUDBQFWLlz8pp0IwsibV8MBCLBgA/9G7uOaA8ZF7l+JBVRofDMQzfDzMD3Mu3xH
j60kMBOxoywGl6W3oW8gvTKC0EsC/O1fXZl5lms77wZYj1uyhI/XD9K1+YwuhV4w
xmpnawNgN+gYUG+K6uPhILTGUusvtvMdCWX8Q81YiArJ8EB8iPFtCIpU5LW4u3S9
Xi6B4vCOLQ==
=2pN3
-----END PGP SIGNATURE-----
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german