Heim >Backend-Entwicklung >PHP-Tutorial >Wie gebe ich benutzerdefinierte HTTP-Body-Inhalte in CakePHP 3.4 aus?
Im Gegensatz zu früheren Versionen erzwingt CakePHP 3.4 strikt die Trennung von Datenbearbeitung und -präsentation in Controllern. Das direkte Echo von Daten kann zu unerwarteten Fehlern führen.
Um benutzerdefinierte HTTP-Body-Inhalte auszugeben, empfiehlt CakePHP die Verwendung entweder des PSR-7-kompatiblen Antwortobjekts oder serialisierter Ansichten.
PSR-7-kompatible Schnittstelle:
<code class="php">$content = json_encode(['method' => __METHOD__, 'class' => get_called_class()]); $this->response = $this->response->withStringBody($content); $this->response = $this->response->withType('json'); return $this->response;</code>
Veraltete Schnittstelle (CakePHP < 3.4.3):
<code class="php">$content = json_encode(['method' => __METHOD__, 'class' => get_called_class()]); $this->response->body($content); $this->response->type('json'); return $this->response;<h3> Verwendung serialisierter Ansichten</h3> <pre class="brush:php;toolbar:false"><code class="php">$content = ['method' => __METHOD__, 'class' => get_called_class()]; $this->set('content', $content); $this->set('_serialize', 'content');</code>
Dazu müssen Sie die Anforderungshandlerkomponente aktivieren und den Router so konfigurieren, dass er die Analyse für JSON-Anfragen erweitert (mit an URLs angehängter .json-Datei) oder eine entsprechende Anfrage mit einer Anwendung/JSON-Akzeptanz verwendet Header.
Vom Echo von Daten direkt in Controllern wird in CakePHP 3.4 abgeraten. Verwenden Sie stattdessen das Antwortobjekt oder serialisierte Ansichten, um benutzerdefinierte HTTP-Body-Inhalte zuverlässig auszugeben.
Das obige ist der detaillierte Inhalt vonWie gebe ich benutzerdefinierte HTTP-Body-Inhalte in CakePHP 3.4 aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!