テンプレートの扱い

次期Moonyの構想とか。

Moony_TemplateはSmartyを利用したテンプレートクラス。アクションクラスのexecuteメソッドの引数として渡される。値の設定用に以下のメソッドが用意されており、最後の引数にfalseを指定しない限り値がエスケープ処理される。

  • bind(&$obj, $to_escape = true): オブジェクトの全プロパティを取り出して設定
  • assign($name, $value, $to_escape = true): 値を設定
  • assignAll($values, $to_escape = true): 連想配列の全要素を取り出して設定
class Foo extends Moony_Action
{
    // リクエストパラメータ
    var $name;

    function validate($v)
    {
        $v->setRequired($this->name, '名前は必ず入力してください');
    }

    function execute($t)
    {
        $session = $this->getSession();
        $user_id = $session->get('user_id');

        // テンプレートに設定
        $t->assign('user_id', $user_id);

        // このクラスのプロパティを設定
        $t->bind($this);

        // テンプレート描画(デフォルトテンプレートを使用)
        $t->display();
    }
}