无法更新 Laravel 中的照片,因为验证甚至可以在创建个人资料人物时上传照片

can't update photo in Laravel because validation even can upload photo when create a profile person

我无法在更新个人资料时上传照片,即使我在第一次创建个人资料时可以上传照片。在更新部分,我将验证放在照片更新和创建的表单请求中。这是

'foto'          => 'sometimes|image|max:500|mimes:jpeg,jpg,bmp,png',

创建时上传的一切都很好。但是,当上传更新时,由于验证出现警告。这样'The PHOTO must be an image.'或者'The PHOTO must be a file of type: 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',
        ];
    }

所以,我根本无法更新我的照片。修复方法如何?

将此添加到您的表单中。也许这会解决它。

enctype="multipart/form-data" :

<form action="..." class="...." method="post" enctype="multipart/form-data">