青金石输入验证

时间:2015-05-07 02:57:58

标签: lua

我第一次在这里学习Lua / Lapis时遇到了问题。

现有条件:验证失败时,控制器会显示一个视图(我不知道哪一个)。验证通过后,登录视图会正确显示。

预期条件:我想在输入验证失败时呈现包含错误消息的注册视图。验证通过后,应重定向到登录视图。

这是我的控制器:

app:post("/signup", capture_errors(function(self)
  validate.assert_valid(self.params, {
    { "email", exists = true },
    { "password", exists = true },
    { "confirm_password", equals = self.params.password }
  })

  return { redirect_to = "/signin" }
end))

谢谢!

1 个答案:

答案 0 :(得分:0)

capture_errors提供了一个默认的错误处理程序,如下所示:

function() return { render = true } end

请参阅http://leafo.net/lapis/reference/utilities.html#application-helpers-safe_fn--capture_errorsfn_or_tbl

它表示要呈现该操作的默认视图。当您想要在与表单相同的页面上显示错误时,这非常有用。

为了覆盖错误处理程序,您可以编写:

app:post("/signup", capture_errors({
  on_error = function(self)
    return { redirect_to = "/signin" }
  end,
  function(self)
    validate.assert_valid(self.params, {
      { "email", exists = true },
      { "password", exists = true },
      { "confirm_password", equals = self.params.password }
    })

    return { redirect_to = "/signin" }
  end
}))

您可以在参考手册中查看完整示例:http://leafo.net/lapis/reference/exception_handling.html#capturing-recoverable-errors

我建议不要对POST进行重定向,因为您无法访问错误消息。 (通常在同一请求中的self.errors中)