php - yii2中gridview中的数据更新问题

标签 php gridview yii yii2

我有一个表“attendance”,当我对其执行创建操作时,它正常工作,如下面的屏幕截图,enter image description here

在这个表单中,如果状态值为“缺席”或“离开”,我使用 jquery 禁用表单字段“时间”和“时间”。 我的 jquery 代码在下面

   <script>
     $(document).ready(function() {
        $("#status_id").on('change', function() 
        {
            if($("#status_id").val()=='Absent' || $("#status_id").val()=='Leave')
            {
                $("#attendance-time_in").val('');
                  $('#attendance-time_in').attr('disabled', true);

                 $("#attendance-time_out").val('');
                 $('#attendance-time_out').attr('disabled', true);

            }
            else {
                 $("#attendance-time_in").val();
                    $('#attendance-time_in').attr('disabled', false);

                   $("#attendance-time_out").val();
                    $('#attendance-time_out').attr('disabled', false);

        }

        }); 
    });

</script>

_form.php代码是

<?= $form->field($model, 'status', ['inputOptions' => ['class' => 'form-control','id' => 'status_id']])
                ->dropDownList([ 'Present' => 'Present', 'Absent' => 'Absent', 'Leave' => 'Leave',], ['prompt' => 'Select status']); ?>

        <?=
        $form->field($model, 'time_in')->widget(TimePicker::classname(), [
            'name' => 'time_in',
            'options'=>[
                'id'=>'attendance-time_in',
            ],
        ]);
        ?>
        <?=
        $form->field($model, 'time_out')->widget(TimePicker::classname(), [
            'name' => 'time_out',
            'options'=>[
                'id'=>'attendance-time_out',
            ],
        ]);
        ?>

它可以很好地创建操作,但是当我更新任何数据时 enter image description here

就像我更新 arsalan khalid 的数据,我把 absent 而不是 present jquery 正常工作但是当我点击更新按钮时它不会更新“time in”和“time out”属性,而所有其他属性都得到updated.for 'time in' 和 'time out' 它采用之前的值,即上午 9:40 和下午 5:52,但我希望它应该具有空值,因为我在状态中选择了“缺席”。 AttendanceController 更新操作

公共(public)函数 Action 更新($id) { $model = $this->findModel($id);

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        return $this->redirect(['view', 'id' => $model->id]);
    } else {
        return $this->render('update', [
            'model' => $model,
        ]);
    }
}

出勤模型规则

public function rules()
    {
        return [
            [[ 'staff_id'], 'integer'],
            [['daytime'], 'safe'],
           [['staff_id'], 'required'],
            [['status','time_in', 'time_out'], 'string', 'max' => 45]
        ];
    }

我是 yii2 的新手。 非常感谢。

最佳答案

您需要做的是在您的出勤模型中创建另一个规则。

[['time_in', 'time_out'], 'filter', 'filter' => function ($value) {
    if($this->status_id == AbsentStatus->status_id)
    {
        return null;
    }
    return $value;
}],

这样,如果 status_id 等于 AbsentStatus,则将 time_in 和 time_out 的值设置为 null。

编辑:您应该将条件中的“AbsentStatus->status_id”替换为您缺席状态的 ID 值。

关于php - yii2中gridview中的数据更新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32243380/

相关文章:

php - 使用 latin1_general_ci 将 Unicode 数据插入数据库的最佳方法

php - channel 方面的 Google Adsense 信息

c# - 使用 C# 将排序添加到嵌套的 Gridview ASP.net

php - CMS帐户中的YouTube数据API PHP channel 列表查询

php - 如何将记录插入到我的自定义 WordPress 表中?

c# - 如何对 Gridview 项目进行排序

Android:GridView 在滚动时显示重复的图像

php - jquery-gmap yii

php - yii2重命名迁移文件以重新排序迁移错误

yii - 将 Yii 转换为 Yii 2.0 : getRestParams()