关于模型的场景属性

时间:2013-08-20 05:40:42

标签: php yii

我目前面临模型的“场景”属性问题。问题是,我有一个单选按钮列表,其中包含两个项目“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'),

然而,它根本不起作用?请帮帮我。

提前谢谢你。

1 个答案:

答案 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');
}