我有一个表“attendance”,当我对其执行创建操作时,它正常工作,如下面的屏幕截图,
在这个表单中,如果状态值为“缺席”或“离开”,我使用 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',
],
]);
?>
就像我更新 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/