fatfree框架,在验证失败后重新填充字段

时间:2015-06-07 00:20:28

标签: redirect contact-form fat-free-framework

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

我知道我可以在我的模板中使用public class ObservableObject : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void RaisePropertyChangedEvent(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } } ,但是正确的方法是什么 将输入的数据发送回该视图,以及如何将用户重定向回 形成? isset(@POST.fieldname)方法是正确的吗?

1 个答案:

答案 0 :(得分:1)

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

例如:

您的表单视图:

<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 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');
  }

}

在其他一些上下文中,您可以使用来自db mapper的数据提供表单视图(例如,当编辑来自后台的条目时):$this->renderForm($mapper->cast())