Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengeluarkan Badan HTTP Tersuai dengan CakePHP 3.4?
CakePHP 3.4 memperkenalkan pendekatan yang lebih ketat untuk pengendalian pengepala, melarang gema langsung data dalam pengawal. Percubaan untuk menggemakan kandungan, seperti yang dilihat di bawah, mengakibatkan ralat "Tidak dapat memancarkan pengepala":
<code class="php">public function test() { $this->autoRender = false; echo json_encode(['method' => __METHOD__, 'class' => get_called_class()]); }</code>
Mengapa CakePHP Mengeluh
Amalan ini tidak digalakkan dalam CakePHP atas beberapa sebab:
Kaedah Output yang Betul
Terdapat dua pendekatan yang disyorkan untuk menghantar output tersuai:
Konfigurasikan Objek Respons:
Menggunakan antara muka yang mematuhi PSR-7:
<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>
Menggunakan antara muka yang tidak digunakan:
<code class="php">$content = json_encode(['method' => __METHOD__, 'class' => get_called_class()]); $this->response->body($content); $this->response->type('json'); return $this->response;</code>
Gunakan Paparan Bersiri:
<code class="php">$content = ['method' => __METHOD__, 'class' => get_called_class()]; $this->set('content', $content); $this->set('_serialize', 'content');</code>
Kaedah ini memerlukan komponen Pengendali Permintaan dan pemetaan URL yang sesuai untuk menggunakan pemaparan JSON.
Bahan Rujukan
Untuk maklumat lanjut, rujuk sumber berikut:
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Badan HTTP Tersuai dengan CakePHP 3.4?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!