Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gebe ich benutzerdefinierte HTTP-Body-Inhalte in CakePHP 3.4 aus?

Wie gebe ich benutzerdefinierte HTTP-Body-Inhalte in CakePHP 3.4 aus?

Susan Sarandon
Susan SarandonOriginal
2024-10-26 04:03:03849Durchsuche

How to Output Custom HTTP Body Contents in CakePHP 3.4?

Ausgabe benutzerdefinierter HTTP-Body-Inhalte mit CakePHP 3.4

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.

Konfigurieren des Antwortobjekts

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.

Fazit

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn