Re: [TYPO3-german] Best Practice: Ajax calls vom Frontend? Ich dreh durch...

2015-11-04 Diskussionsfäden Helmut Hummel

Hi!

Gerhard Mehsel wrote:


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?


Absolut korrekt!

Viele Grüße,
Helmut

--
Helmut Hummel
Release Manager TYPO3 6.0
TYPO3 CMS Active Contributor, TYPO3 Security Team Member

TYPO3  inspiring people to share!
Get involved: typo3.org
___
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Re: [TYPO3-german] Best Practice: Ajax calls vom Frontend? Ich dreh durch...

2015-11-02 Diskussionsfäden Gerhard Mehsel

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: 

Re: [TYPO3-german] Best Practice: Ajax calls vom Frontend? Ich dreh durch...

2015-10-26 Diskussionsfäden 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 

Re: [TYPO3-german] Best Practice: Ajax calls vom Frontend? Ich dreh durch...

2015-10-25 Diskussionsfäden Dr Dieter Porth
Am 25.10.2015 um 17:31 schrieb Gerhard Mehsel:
> 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 nutze die typeNum-methode, um ein Formular aufzurufen, mit welchen
ich daten aktuallisieren kann. Zumindest für einfache Daten funktioniert
es ganz gut.

Ich habe mich an folgenden Schema orientiert, um ein Formular im Rahmen
eines Request zurückzugeben, wobei ich statt =<  die < verwende.
Der zurückgegeben Action-Link des Formulars wird anschließend per jQuery
in einen AJAX-Link umgewandelt, um auch eine Ajax-Rückgabe zu ermöglichen.

# temp.include = USER # temp.include { # userFunc =
TYPO3\CMS\Extbase\Core\Bootstrap->run # vendorName = myVendor #
pluginName = MyPlugin # extensionName = MyExtension # # settings =<
plugin.tx_myExtension.settings # persistence =<
plugin.tx_myExtension.persistence # view =< plugin.tx_myExtension.view #
} Dieter

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

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

[TYPO3-german] Best Practice: Ajax calls vom Frontend? Ich dreh durch...

2015-10-25 Diskussionsfäden Gerhard Mehsel

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

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