2017-02-27 2 views
2

Für meine extbase-basierte TYPO3 CMS Erweiterung habe ich einen ApiController mit JsonView als Ansichtsobjekt erstellt. Rückgabewerte wirken wie ein Charm, der richtige Header Content-type: application/json ist gesetzt.JSON codierte Ausnahmen in TYPO3 extbase Controller mit JsonView

andere Antworten zurückzukehren wie Authorisierungsmeldungen oder Validierungsfehler fehlt, verwende ich zur Zeit:

$data = ["errors" => [ 
    "status" => 401, 
    "message" => "Missing access token" 
]]; 
$this->throwStatus($status, null, json_encode($data)); 

Wenn ich $this->throwStatus() der Header Content-type: text/html verwenden gesetzt. Selbst wenn ich header("Content-type: application/json"); vor der Verwendung $this->throwStatus() manuell einstelle.

Wie kann ich Antworten mit dem richtigen Inhaltstypkopf erstellen?

+0

Haben Sie versucht, Header-set mit '$ this-> response-> setHeader ('Content-Typ',‚App lication/json ', wahr); '? – undko

Antwort

2

Bevor Sie den Status werfen, versuchen Sie die Header in der Antwort Objekt einzustellen:

$this->response->setHeader('Content-Type', 'application/json', true); 
$this->response->sendHeaders(); 

Wenn Sie Ihre Daten über eine spezielle Seitentyp zugreifen, können Sie die Header für diesen Seitentyp in TypoScript setzen:

myPageType.config.additionalHeaders { 
    10 { 
     header = Content-Type: application/json 
     replace = 1 
    } 
} 

ich dies zu meinem Beitrag über das Thema hinzufügen wird: https://usetypo3.com/json-view.html

Verwandte Themen