更新个人资料时我无法上传照片,即使我第一次创建个人资料时也可以上传照片。在“更新”部分,我将验证放入表单请求中以进行照片更新和创建。
'foto' => 'sometimes|image|max:500|mimes:jpeg,jpg,bmp,png',
在创建中上传时,一切都很好。但是,在上载进行更新时,会出现警告,因为正在验证。这样的“照片必须是图像”。或“照片必须是以下类型的文件:jpeg,jpg,bmp,png。”
这是我的代码:
在控制器上进行更新:
public function update(Siswa $siswa, SiswaRequest $request){
$input = $request->all();
if($request->hasFile('foto')) {
$exist = Storage::disk('foto')->exists($siswa->foto);
if(isset($siswa->foto) && $exist) {
$delete = Storage::disk('foto')->delete($siswa->foto);
}
$foto = $request->file('foto');
$ext = $foto->getClientOriginalExtension();
if ($request->file('foto')->isValid()) {
$foto_name = date('YmdHis').".$ext";
$upload_path = 'fotoupload';
$request->file('foto')->move($upload_path, $foto_name);
$input['foto'] = $foto_name;
}
}
$siswa->update($input);
$telepon = $siswa->telepon ?? new Telepon();
$telepon->nomor_telepon = $request->input('nomor_telepon');
$siswa->telepon()->save($telepon);
$siswa->hobi()->sync($request->get('hobi_siswa', []));
return redirect('siswa');
}
这是我在请求中验证的代码
public function rules()
{
if($this->method() == 'PATCH') {
$id_rules = 'required|numeric|digits:8|unique:siswa,id,' . $this->get('id');
$telepon_rules = 'sometimes|numeric|digits_between:10,15|unique:telepon,nomor_telepon,' . $this->get('id') . ',id_siswa';
}
else {
$id_rules = 'required|numeric|digits:8|unique:siswa,id';
$telepon_rules = 'sometimes|numeric|digits_between:10,15|unique:telepon,nomor_telepon';
}
return [
'id' => $id_rules,
'nama_siswa' => 'required|regex:/^[\pL\s]+$/u|max:30',
'tanggal_lahir' => 'required|date',
'jenis_kelamin' => 'required|in:L,P',
'nomor_telepon' => $telepon_rules,
'id_kelas' => 'required',
'foto' => 'sometimes|image|max:500|mimes:jpeg,jpg,bmp,png',
];
}
所以,我根本无法更新照片。如何解决?
答案 0 :(得分:0)
将此添加到您的表单。也许这会解决它。
(1, [2, 3, 4])
(2, [3, 4])
(3, [4])
(4, [])
:
enctype="multipart/form-data"