我是轮子新手,仍在学习中。在我看来,表单的每个帖子都需要调用映射到特定模型中的方法的操作。但是,表单是否可以向自身发送信息?
我想避免的是人们直接导航到操作 View - 这似乎会引发错误。我还想做很多 self 发布,因为这可能意味着我的 View 文件夹中不必有很多空文件。
我考虑的另一个优点是,如果表单是 self 发布的,我将受益于在全局范围内使用它。例如,我的标题中可能有一个表单,我希望用户在网站的任何位置填写该表单。或者有没有办法检测用户来自哪里并进行动态重定向?
非常感谢, 迈克尔。
最佳答案
为了避免由于用户浏览 post
操作而导致的错误,请查看验证:
http://cfwheels.org/docs/chapter/verification
因此,您的 create
和 update
操作将在 Controller 的 init
中进行如下配置:
<cffunction name="init">
<cfset verifies(only="create,update", post=true, params="comment", paramsTypes="struct")>
</cffunction>
在表单发布后将用户重定向回上一页并不是没有道理的。查看 redirectTo(back=true)
以了解您的成功操作。
http://cfwheels.org/docs/1-1/function/redirectto
<cffunction name="init">
<cfscript>
verifies(only="create,update", params="comment", paramsTypes="struct");
provides("html,json");
</cfscript>
</cffunction>
<cffunction name="create">
<cfscript>
comment = model("comment").new(params.comment);
comment.save();
if (isAjax())
{
renderWith(comment);
}
else
{
if (comment.hasErrors())
redirectTo(back=true, error="There was an error saving the comment.");
else
redirectTo(back=true, success="The comment was posted successfully.");
}
</cfscript>
</cffunction>
是的,我喜欢克雷格的回答,即 AJAX 是一个很好的解决方案,但您还需要考虑如果 AJAX 失败并且表单最终通过非 AJAX 请求发布到 URL 会发生什么情况。最好提供完全无障碍的体验。
关于model-view-controller - CFWheels - 如何进行表单自助发布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10216377/