model-view-controller - CFWheels - 如何进行表单自助发布?

标签 model-view-controller coldfusion railo cfwheels

我是轮子新手,仍在学习中。在我看来,表单的每个帖子都需要调用映射到特定模型中的方法的操作。但是,表单是否可以向自身发送信息?

我想避免的是人们直接导航到操作 View - 这似乎会引发错误。我还想做很多 self 发布,因为这可能意味着我的 View 文件夹中不必有很多空文件。

我考虑的另一个优点是,如果表单是 self 发布的,我将受益于在全局范围内使用它。例如,我的标题中可能有一个表单,我希望用户在网站的任何位置填写该表单。或者有没有办法检测用户来自哪里并进行动态重定向?

非常感谢, 迈克尔。

最佳答案

为了避免由于用户浏览 post 操作而导致的错误,请查看验证: http://cfwheels.org/docs/chapter/verification

因此,您的 createupdate 操作将在 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/

相关文章:

asp.net-mvc - 是否可以在 mvc 中将 Controller 名称映射到另一个名称

php - 将 CodeIgniter (PHP) 与 Backbone Js 混合使用

c# - LightInject SignalR 缺少 .RegisterHubs 方法

ColdFusion Builder 针对 railo 友好的操作符 "=="、 "!="等进行验证

h2 - 如何在H2中创建新数据库?

c# - 使用模型和 View (MVC)

sql - BULK INSERT 缺少最后一行?

jquery - 无法将 ID 变量传递到在模态框中显示正确记录的 CFC

ajax - 如果超过一定大小的 ajax 调用,则怀疑 IIS7.5 连接器问题 Tomcat 和 Coldfusion 10

coldfusion - 如何在 Railo 中捕获 "coldfusion.runtime.MissingArgumentException"等效项?