FuelPHPで任意のViewにステータスコードを設定する方法 #fuelphp
Fuelphpで既存に用意されている404を使わずに任意のViewにステータスコードを設定させたいときの方法メモ。
Fuelphp1.4で404や500以外にも様々なステータスコードを返すことをしたいと思いました。 当初はここの記事を参考にして、ステータスコードをheader関数で設定しようとしましたが、どのステータスコードを設定しても、サーバー上で500のエラーが出る状態。
Twitterに投げかけたところ、「header関数はHTTPヘッダを送信する関数なので、関数使う前に文字を出力していると無効になっちゃいますね」と教えていただき、これはFuelphp的な問題だと気づきました。
結論としてはFuelphpの作法でステータスコードを設定する必要があります。 Rest コントローラ - 概要 - FuelPHP ドキュメントにありました。
response($data = array(), $http_code = 200)
とありました。実際にControllerでViewを生成するところに当てはめてみます。
$view = View::forge('sample/error'); // Viewファイルの指定
$view->set('test',$test); // 値を渡す
return Response::forge($view,404);