这是我的典型表格
$errors = array();
if ($this->request->post('submit')) { // <----- I don't like this line
$post = Validation::factory($this->request->post())
->rule('email', 'not_empty')
->rule('email', 'email')
->rule('password', 'not_empty');
if ($post->check()) {
// ok, do something
}
$errors = $post->errors(true);
}
$this->template->content = View::factory('auth/register')
->set('errors', $errors);
如您所见 - 我检查是否有提交元素,这意味着我们实际上已经发布了表单,而不仅仅是第一个节目的请求。
如果我们删除该条件 - 我们将对第一页请求有验证错误。关于空电子邮件和密码表单的错误。这实际上是不正确的。
那么你如何解决这个问题?
答案 0 :(得分:3)
除了条件:
之外,我就是这样做的if (Request::POST === $this->request->method())
会更合适。没有任何方法可以“跳过”POST检查而不会产生任何后果(例如您的错误)。
我们讨论过这个话题,5.3可能会添加更多功能。类似的东西:
$this->post(function(){
// do POST-specific stuff
})
->get(function(){
// do GET-specific stuff
});
答案 1 :(得分:1)
if ($post = $this->request->post())
{
$post = Validation::factory($post);
...
}