Dcat Admin 判断文件重新上传后如何重置某些字段的值?
情况是这样的,我做了一个报告相关的功能,先上传PDF,然后生成一页页的图片,有一个页数和生成时间字段,我想要在报告文件重新上传的时候重置一下页数和生成时间字段,设置为null,因为修改了上传文件需要重新生成报告图片,但是我发现一个问题,我是在saving里面判断现在上传的文件和之前的文件是否一致,但是我发现文件上传完成后,数据库里面的文件路径字段已经被修改成最新了,导致$form->file_path
和$form->model()->file_path
一致,请问这个有什么办法吗?
代码如下:
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new Report(), function (Form $form) {
$form->text('title')->required()->rules('required|max:255');
$form->image('cover')->required()->rules('required|image|dimensions:min_width=400')->resize(540, 300)->uniqueName()->move("images/report/cover/" . date("Y/m/d", time()))->help('推荐尺寸:540px * 300px,宽度不能小于400px')->removable(false)->autoUpload();
$form->textarea('summary')->rows(5)->required();
$form->file('file_path')->required()->rules('required|file|mimetypes:application/pdf')->accept('pdf', 'application/pdf')->maxSize(20480)->uniqueName()->move("files/report/pdf/" . date("Y/m/d", time()))->help('目前只允许上传PDF格式的报告,大小不超过20M')->removable(false)->autoUpload();
$form->switch('is_show')->default(false);
$form->switch('is_top')->default(false);
$form->text('review_count')->default(0)->readOnly();
$form->text('download_count')->default(0)->readOnly();
$form->text('share_count')->default(0)->readOnly();
$form->text('collection_count')->default(0)->readOnly();
$form->text('total_page')->readOnly();
$form->text('start_page')->rules('nullable|numeric|min:1');
$form->text('end_page')->rules('nullable|numeric|min:1|required_with:start_page');
$form->switch('is_vip')->default(false);
$form->datetime('created_at')->default(now());
$form->hidden('admin_user_id');
$form->hidden('generated_at');
$form->disableDeleteButton();
$form->disableCreatingCheck();
$form->disableEditingCheck();
$form->disableViewCheck();
// 后台发布报告,admin_user_id根据管理员来
$form->saving(function (Form $form) {
if($form->isCreating()) {
// 创建时
$form->admin_user_id = Admin::user()->id;
}else {
if(!is_null($form->file_path) && ($form->file_path != $form->model()->file_path)) {
// 判断报告文件是否有重新上传
$form->total_page = null;
$form->generated_at = null;
}
}
});
});
}
把 autoSave 设置为 false