CakePHP 2.x で MIME type (Content-Type) を指定する方法

この記事を読むのに必要な時間は約 4 分です。


CakePHP の通常のページは、Content-Type: text/html で送信されます。html 以外のコンテンツである、CSS や JS や、ダウンロードするファイル等を送信する場合は、Content-Type を書き換えて、MIME type を指定する必要があります。

今回の記事では、CakePHP 2.x で、Content-Type を指定する方法をご紹介したいと思います。

CakePHP 関連記事は、以下よりご覧下さい。

tag : CakePHP


cake-logo

スポンサーリンク
スポンサーリンク

Content-Type 指定する方法

Controller で以下の例のように $this->response->type( 指定する内容 );  で指定することができます。

以下の例は、PostsController の hoge という Action で、app/View/Posts/fuga.ctp を読み込む場合の記述です。

うまく動作しない指定方法

通常の PHP であれば、 header( "Content-Type: text/css" );  等で可能ですが、CakePHP で Controller や View を通している場合、後から text/html に上書きされるようで、うまく動作しませんでした。

また、$this->response->header() でもうまく動作しませんでした。以下が動作しない例です。

公式 Cookbook に、以下のような例が記載されているのですが、なぜ動作しないのかは分かりません …

ひとこと

CakePHP のフレームワーク側で、バッファしたりとハンドリングしているためか、ちゃんと動作させるために、意外と手間取りました。

お役に立てれば幸いです。

[動作確認環境]

  • PHP : 5.6.9
  • CakePHP : 2.6.4
  • MySQL : 5.6.24


今回は以上です。


スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です