fatfree 框架,验证不成功后重新填充字段

fatfree framework, repopulate fields after unsuccessful validation

我有显示联系表单的 GET 路由,以及当用户提交表单时的 POST 路由,然后在我的控制器方法中我对提交的数据进行了一些验证测试..我现在如何发送给用户如果数据无效,则返回表单,输入的数据将重新填充到表单字段中?

我知道我可以在我的模板中使用 isset(@POST.fieldname),但正确的方法是什么 将输入的数据发送回该视图,以及如何将用户重定向回 形式? f3->reroute 方法是否正确?

我认为您可以将输入数据包含在表单视图中作为一项规则。这样,任何表单视图都可以轻松地与任何数据源重复使用。

例如:

您的表单视图:

<form action="" method="post">
  <input type="text" name="email" value="{{ @@input.email }}"/>
  <input type="text" name="message" value="{{ @@input.message }}"/>
  <button type="submit">Submit form</button>
</form>

你的控制器class:

class myController {

  function get($f3) {
    $this->renderForm();
  }

  function post($f3) {
    $post=$f3->clean($_POST);
    //validate form data here
    if ($form_validated) {//valid form data

    } else //invalid form data
      $this->renderForm($post);
  }

  protected function renderForm($input=array()) {
    $tpl=Template::instance();
    //variant 1:
    echo $tpl->render('form.html','text/html',array('input'=>$input))
    // or variant 2:
    Base::instance()->set('input',$input);
    echo $tpl->render('form.html');
  }

}

在其他一些情况下,您可以使用来自数据库映射器的数据提供表单视图(例如,当从后台编辑条目时):$this->renderForm($mapper->cast())