Ich habe begonnen, eine Webanwendung mit dem Joomla Framework zu erstellen . Es besteht aus einer einfachen Webseite, die in einem iFrame zusammen mit einer API angezeigt wird, mit der der Inhalt mit AJAX aktualisiert wird.
Ich folgte den Erste Schritten mit Composer und Joomla! Artikel und haben die Framework App in Betrieb. Ich habe die Standard-HTML-Ausgabe so angepasst, dass sie für meinen iFrame funktioniert, und die API gestartet. Ich habe News als Vorlage verwendet und einen Controller, ein Modell, eine Tabelle und eine Ansicht für meine API erstellt, die alle hervorragend funktionieren. Ich habe dann eine sehr einfache Twig-Vorlage erstellt, die eine JSON-Darstellung meiner Daten wie folgt zurückgibt:
{{ items|json_encode|raw }}
So weit so gut, aber ich bekomme diesen Header zurückgegeben, was bei der Verwendung von AJAX mit jQuery zu Problemen führen wird:
Content-Type:text/html; charset=utf-8
Ich dachte, es wäre ein einfacher Fall, dies hinzuzufügen, aber egal wo ich es platziere, es ändert nichts an dem zurückgegebenen Header:
$this->app->setHeader('Content-Type', 'application/json', true);
Ich weiß, dass setHeader so funktioniert, als würde ich den Namen ändern. Ich sehe, dass der neue Header zurückgegeben wird, sodass ich davon ausgehe, dass er später in der Ausführung überschrieben wird.
Meine Frage ist also, gehe ich das richtig an? Meine Ansicht erweitert DefaultHtmlView, was sich falsch anfühlt. Soll ich eine DefaultJsonView erstellen? Wie kann ich den richtigen Inhaltstyp festlegen oder gibt es einen besseren Ansatz für die Rückgabe von JSON?
Jede Hilfe, die gegeben werden kann, wie das Joomla Framework am besten zum Erstellen einer API verwendet werden kann, wird sehr geschätzt.
exit
, sollte es verhindern, dass etwas mehr ausgeführt wird, und es einfach so ausgeben, wie es derzeit ist. Ihre Antwort scheint jedoch viel besser zu sein.