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

时间:2018-07-11 02:21:18

标签: php laravel laravel-5.2

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

'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',
        ];
    }

所以,我根本无法更新照片。如何解决?

1 个答案:

答案 0 :(得分:0)

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

(1, [2, 3, 4]) (2, [3, 4]) (3, [4]) (4, [])

enctype="multipart/form-data"