我第一次在这里学习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))
谢谢!
答案 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
中)