【问题标题】:CFWheels: Form Helper Radio ButtonCFWheels:表单助手单选按钮
【发布时间】:2015-12-17 01:01:37
【问题描述】:

我正在使用 CFWheels 进行表单验证。我在两个对象模型中都有 presenseOf() 验证检查。我有一个带有文本框和一组单选按钮的表单。

但是,如果我将表单提交为空,则主管的验证有效,但用户清单的验证无效。它给出了错误;

“uchecklist”未在 params 变量中定义。

进一步观察,我注意到提交表单时,params 结构有“supervisor[name]”对象但它是空的,但它甚至没有“uchecklist[cstatus]”对象。此外,只有当我选择其中一个单选按钮时,才会使用该单选按钮的值提交“uchecklist [cstatus]”对象。

我需要验证是否至少选择了一个单选按钮,我来宾此功能与空文本框验证不同。

谁能告诉我如何使用 CFWheels 表单助手验证单选按钮。

控制器

public function t_validate()
        {
            title = "Home";
            supervisor = model("supervisors");
            uchecklist = model("user_checklist");


        }

        public function t_validate_complete()
        {
            title = "Home";

            supervisor = model("supervisors").new(params.supervisor);
            supervisor.save();

            uchecklist = model("user_checklist").new(params.uchecklist);
            uchecklist.save();

            renderPage(action="t_validate");
        }

查看

<cfoutput>
<cfdump var="#params#">

#errorMessagesFor("supervisor")#

#startFormTag(action="t_validate_complete")#

    <div>
        <label for="">Supervisor:</label>
        <input name="supervisor[name]" value="" />
    </div>

    <fieldset>

        <input type="radio" name="uchecklist[cstatus]" value="1" />
        <label for="profile-eyeColorId-2">Blue</label><br />

        <input type="radio" name="uchecklist[cstatus]" value="2" />
        <label for="profile-eyeColorId-1">Brown</label><br />

        <input type="radio" name="uchecklist[cstatus]" value="3" />
        <label for="profile-eyeColorId-3">Hazel</label><br />

    </fieldset>

    <div>
        <input type="submit" value="Save Changes" />
    </div>

#endFormTag()#

</cfoutput>

【问题讨论】:

    标签: cfwheels


    【解决方案1】:

    未选中的单选按钮不会向服务器提交任何数据。这不是 ColdFusion 或 CFWheels 独有的问题。

    要解决此问题,请在控制器操作的开头为结构提供默认值:

    public function t_validate_complete()
    {
        // Provides an empty struct for the model to consume if none of the radio buttons are checked.
        param name="params.uchecklist" type="struct" default="#StructNew()#";
    
        title = "Home";
    
        supervisor = model("supervisors").new(params.supervisor);
        supervisor.save();
    
        uchecklist = model("user_checklist").new(params.uchecklist);
        uchecklist.save();
    
        renderPage(action="t_validate");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-10
      • 2016-09-25
      • 2013-07-15
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多