ajax の目的で、ビューなしで Cakephp (2.8.5) コントローラーから文字列をレンダリングしようとしています。これを達成するために、私は通常、コーディングして$this->render = false
から の前に使用するreturn
と、正常に動作します。
OVH (フランスのインターネット サービス プロバイダー) に Web サイトをアップロードしましたが、何か問題があり、レンダリングされた文字列が正常に動作しません。ある程度の大きさになるまでは、意図したとおりに表示されません。
問題を実証するために、オンラインで動的ページを用意しました (15 を任意の数に変更できます。15 未満で問題が発生します): http://darxnake.fr/nadau3/pages/test/15
コードは非常に単純です:
PagesController.php :
class PagesController extends AppController {
public function test($nb=1) {
$str = "";
$char = "o";
$upper = true;
for ($i=0; $i < $nb; $i++) {
$str .= $upper ? strtoupper($char) : strtolower($char);
$upper = $upper ? false : true;
}
$this->autoRender = false;
return $str;
}
}
最後return
を a で変更die
すると完全な文字列が表示されますがdie
、コントローラーでは好きではありません。
このコードは私のコンピューター (Windows / uWamp) でオフラインで動作し、何が問題なのか理解できません。OVH から何かを疑っていますが、確信が持てず、どこを見ればよいかわかりません。このホストの phpinfo は次のとおりです: http://darxnake.fr/nadau3/pages/info/
何が起こっているのかを知るのを手伝ってくれませんか? ありがとうございました。
編集 :
最後に、問題の原因を突き止めました。Cakephp2 はContent-Length
、すべての応答で呼び出される HTTP ヘッダーを送信します。渡されたサイズは正確ですが (コードで要求された 14 文字のヘッダーに 14 が渡されます)、レンダリングされた文字列は削除されます。CakePhp lib (/lib/Cake/Network/CakeResponse.php) でこのヘッダーを無効にすると、レンダリング文字列が修正されます。
私のローカルPCでは、このヘッダーは送信されません(理由はわかりません)。OVHではまったく同じテストですが、CakePhp 3では、このヘッダーも送信されません。
だから私はそれを無効にしました lib コードと問題はなくなりましたが、誰かが何が起こったのか説明してください。私はHTTPヘッダーにあまり慣れていません...