我目前面临模型的“场景”属性问题。问题是,我有一个单选按钮列表,其中包含两个项目“text”和“number”。在此单选按钮列表下方,我定义了三个关键字文本字段。现在我使用JQuery来隐藏/显示那些关键字文本字段(当用户在单选按钮列表中选择“数字”项时,这些关键字文本字段是隐藏的。)我现在要做的是添加服务器端验证一个“答案”文本字段。如果用户在单选按钮列表中被选为“数字”项,则答案必须是数字。
我目前的计划是在JQuery部分中指定模型的scenario属性,如下所示:
<script type="text/javascript">
$(document).ready(function(){
$("#Task_0_answer_type_0").click(function () {
if ($(this).is(":checked")){
$(".keyword").show();
<?php $task->scenario = ''?>
}
});
$("#Task_0_answer_type_1").click(function () {
if ($(this).is(":checked")){
$(".keyword").hide();
<?php $task->scenario = 'number'?>
}
});
});
</script>
然后我通过添加以下语句来更改模型中的rules():
array('answer', 'numerical', 'on'=> 'number'),
然而,它根本不起作用?请帮帮我。
提前谢谢你。
答案 0 :(得分:2)
我现在要做的是添加服务器端验证 “回答”文本字段。如果用户在收音机中选择“号码”项 按钮列表,答案必须是数字。
你混合客户端脚本和服务器语言绝对错误,你必须从上面的脚本中删除部分PHP代码,因为它们没有任何意义。
<select name="Task[options]">
<option value="-1">Select One</option>
<option value="1">Answer Type Text</option>
<option value="2">Answer Type Number</option>
</select>
当您发布表单时,在执行验证之前,只需在此处进行切换
if($_POST['Task']['options'] == '2'){
$taskModel->setScenario('number');
}