Validation機能について・続き

Moony_Viewクラスの内部で持っているSmartyクラスのインスタンスを返すメソッドを用意してみた。これで強引にすればSmartyValidateの利用が可能になる。*1

class FooAction extends Moony_Action {
  function execute($context, $view) {

    $smarty = $view->getSmarty();

    $request = $context->getRequest();
    $params = $request->getAll();

    if (is_empty($params)) {
      SmartyValidate::connect($smarty, true);
      // validationの内容を設定
      SmartyValidate::register_validator(...);
      // フォーム表示
      $view->setTemplate('FooForm.tpl');
    } else {
      SmartyValidate::connect($smarty);
      if (SmartyValidate::is_valid($params)) {
        SmartyValidate::disconnect();
        // 正常系の処理を記述
      } else {
        // validateエラー、フォーム再表示
        $view->assignAll($params);
        $view->setTemplate('FooForm.tpl');
      }
    }
  }
}

*1:Moony独自でValidation機能を持つ予定は今のところありません。