Ich habe eine Lösung mit Hilfe einer Änderung aus dem Contao 3.1 Milestone hinbekommen (Ticket #4736 "generatePage-Hook zu spät"). Leider muss ich damit warten, bis 3.1 released wird, damit das ganze updatesicher wird.
Der Code sieht folgendermaßen aus:
PHP-Code:
$GLOBALS['TL_HOOKS']['getPageLayout'][] = array('JSONResponse', 'onGetPageLayout');
class JSONResponse extends Frontend {
public function onGetPageLayout(PageModel $objPage, LayoutModel $objLayout, PageRegular $objPageRegular)
{
if ($_SERVER["HTTP_X_REQUESTED_WITH"] == 'XMLHttpRequest') {
$objLayout->template .= '.json';
}
}
}
So wird ein Ajax-Request durch das Template fe_page.json.html5 beantwortet anstelle fe_page.html. Würde man
PHP-Code:
$objLayout->doctype = 'json';
setzen, müsste man sämtliche Templates als .json-Variante hinterlegen, was mir zu viel Arbeit und für meine Belange auch unnötig ist. Allerdings ist mir jetzt nicht ganz klar, wie ich so den passenden application/json-Header setzen kann. Ideen?
Lesezeichen