[TYPO3-german] Ajax handling
Chris Wolff - AERTiCKET AG
cwolff at aer.de
Mon Jul 20 14:50:21 CEST 2015
Hallo Benjamin,
ich schätze in deinem Fall beisst dich das Caching from typo3.
Ich vermute mal die extension benutzt ein USER_INT object.
wenn eine seite USER_INT objecte enthält rendert
typo3 den seiteninhalt (ohne USER_INT) objecte.) an ihre Stelle kommt dann
lediglich eine marker,
wenn die seite später dann aus dem cache geholt wird. Wird eieser marker einfach durch die ausgabe
des USER_int Objectes ersetzt.
Dein Json encode greift vor dem Caching.
Und erst danach wird der cachmarker druch das html ersetzt.
Deswegen funktioniert dein encoding so nicht.
Gruss chris
-----Ursprüngliche Nachricht-----
Von: typo3-german-bounces at lists.typo3.org [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Benjamin Giesbrecht
Gesendet: Montag, 20. Juli 2015 13:47
An: typo3-german at lists.typo3.org
Betreff: [TYPO3-german] Ajax handling
Hallo Zusammen,
Ich bin daran einen Ajax-Handler zu implementieren. Es gibt bekanntlich diverse Wege um mit Ajax Requests umzugehen. Ich habe mich dazu entschieden mit pageTypes zu arbeiten. Ruft man eine Seite im Browser auf wird diese mit PageType 0 geladen. Drückt man einen Link in der Navigation wird die nächste Seite via Ajax mit PageType 1 geladen.
Lädt man eine Seite mit PageType 1 bereitet TYPO3 die Seite für JSON vor.
So weit so gut:
[code]
page = PAGE
page {
typeNum = 0
10 = FLUIDTEMPLATE
10 {
file.cObject = CASE
file.cObject {
key.field = backend_layout
key.ifEmpty.data = levelfield: -2, backend_layout_next_level, slide
default = TEXT
default.value = {$filepaths.templates}Basic.html
1 = TEXT
1.value = {$filepaths.templates}Home.html
2 = TEXT
2.value = {$filepaths.templates}Basic.html
3 = TEXT
3.value = {$filepaths.templates}Overlay.html
4 = TEXT
4.value = {$filepaths.templates}Modal.html
5 = TEXT
5.value = {$filepaths.templates}Dashboard.html
6 = TEXT
6.value = {$filepaths.templates}OverlayForm.html
}
partialRootPath = {$filepaths.partials}Default/
layoutRootPath = {$filepaths.layouts}Default/
}
}
// ajax request contact form
ajax = PAGE
ajax {
typeNum = 1
config {
disableAllHeaderCode = 1
xhtml_cleaning = 0
admPanel = 0
additionalHeaders = Content-type: application/json
no_cache = 1
}
10 < page.10
10 {
partialRootPath = {$filepaths.partials}Ajax/
layoutRootPath = {$filepaths.layouts}Ajax/
}
}
Mittels Viewhelper leite ich den Content durch eine json_encode funktion.
{namespace g=VENDOR\UsermanagerPt\ViewHelpers}
<f:layout name="OverlayForm" />
<f:section name="Main">
<g:jsonResponse>
<f:cObject typoscriptObjectPath="lib.register" />
</g:jsonResponse>
</f:section>
/**
* @param boolean $appendContent append content
* @param boolean $submitForm submit form
* @return string
*/
public function render($appendContent = false, $submitForm = false) {
$html = $this->renderChildren();
return json_encode(array(
'success' => true,
'content' => $html
));
Nun zum Problem. Normale Content Elemente werden sauber mit json_encode gerendert. Jedoch wird sämtlicher Content aus einer Extension NICHT verändert. Mache ich einen Denkfehler?
[code]
_______________________________________________
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