CFWheels:表单助手单选按钮
CFWheels: Form Helper Radio Button
我正在使用 CFWheels 进行表单验证。我在两个对象模型中都有 presenseOf() 验证检查。我有一个带有文本框和一组单选按钮的表单。
但是,如果我提交的表单为空,则主管的验证有效,但用户清单的验证无效。它给出了错误;
"uchecklist" 未在 params 变量中定义。
进一步观察,我注意到当提交表单时,params struct 有 "supervisor[name]" 对象但它是空的,但它甚至没有 "uchecklist[cstatus]" 对象。此外,只有当我 select 一个单选按钮时, "uchecklist[cstatus]" 对象才会与该单选按钮的值一起提交。
我需要验证是否至少有一个单选按钮是 select,我想这个功能不同于空文本框验证。
谁能告诉我如何使用 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>
未选中的单选按钮不会向服务器提交任何数据。这不是 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");
}
我正在使用 CFWheels 进行表单验证。我在两个对象模型中都有 presenseOf() 验证检查。我有一个带有文本框和一组单选按钮的表单。
但是,如果我提交的表单为空,则主管的验证有效,但用户清单的验证无效。它给出了错误;
"uchecklist" 未在 params 变量中定义。
进一步观察,我注意到当提交表单时,params struct 有 "supervisor[name]" 对象但它是空的,但它甚至没有 "uchecklist[cstatus]" 对象。此外,只有当我 select 一个单选按钮时, "uchecklist[cstatus]" 对象才会与该单选按钮的值一起提交。
我需要验证是否至少有一个单选按钮是 select,我想这个功能不同于空文本框验证。
谁能告诉我如何使用 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>
未选中的单选按钮不会向服务器提交任何数据。这不是 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");
}