テンプレートファイル名について、「とりあえず触ってみる」で以下のように書きました。
guessworkでは、テンプレートファイルを配置するディレクトリ名およびテンプレートファイル名はコントローラクラス名によって自動的に決定され、 SimpleControllerクラスが参照するデフォルトのテンプレートファイルは simple/default.html のようになります。
これはつまり、コントローラクラス名からControllerを省いて小文字にしたものが「ディレクトリ名」となり、アクションメソッド名から「execute」を省き小文字にて「.html」を付けたたものが「テンプレートファイル名」になるということです。
例
このテンプレートファイルパスは、コントローラクラスの「$_gw_template_templates_dir」クラス変数で指定されたテンプレートディレクトリを起点とした相対パスになります。
前述のようなコントローラクラス名とアクションメソッド名から推測されたテンプレートではなく、任意のテンプレートを表示させたい場合は、Controllerクラスのrender()メソッドを使用します。
class SimpleController extends Controller
{
// 設定部分は省略
function executeDefault()
{
if (...) {
return $this->render("simple/notice");
}
}
}
これで、if文の中が実行された場合には simple/notice.html が、それ以外の場合には simple/default.html がテンプレートとして表示されるようになります。
なお、render()メソッドの戻り値をreturnで返却していることに注意してください。これは、推測されたテンプレートが続けて表示されてしまうことを防ぐためです。
通常、アクションメソッドの実行が完了するとブラウザにはHTTPステータスコードとして200(成功)が送信されますが、これを任意の値に変更したい場合にもrender()メソッドを利用します。
return $this->render("simple/moved", 302);
上の例ではrender()メソッドの第二引数に302(転送)を指定しているため、ブラウザへのレスポンスは以下のようになります。
HTTP/1.1 302 Found Date: Sat, 23 Oct 2004 19:33:33 GMT (中略) Content-Type: text/html