Php 在编辑表单中未选择图像文件时,如何使用当前图像更新配置文件?我使用的是Laravel 8

Php 在编辑表单中未选择图像文件时,如何使用当前图像更新配置文件?我使用的是Laravel 8,php,laravel,model-view-controller,crud,laravel-8,Php,Laravel,Model View Controller,Crud,Laravel 8,每当我试图在编辑表单中仅保存配置文件描述和url的配置文件更改时,我都会收到一个错误,因为我没有选择图像文件 我想能够更新配置文件与当前图像时,图像文件没有选择在编辑形式 我经常遇到的错误是: 在null上调用成员函数store() …该错误是指my UserController的更新方法中的此行: $imagePath = request('image')->store('uploads', 'public'); public function update(User $user, R

每当我试图在编辑表单中仅保存配置文件描述和url的配置文件更改时,我都会收到一个错误,因为我没有选择图像文件

我想能够更新配置文件与当前图像时,图像文件没有选择在编辑形式

我经常遇到的错误是: 在null上调用成员函数store()

…该错误是指my UserController的更新方法中的此行:

$imagePath = request('image')->store('uploads', 'public');
public function update(User $user, Request $request)
     {

       $data = request()->validate([
         'description' => 'nullable',
         'url' => 'nullable',
         'image' => 'nullable',
       ]);

       $imagePath = request('image')->store('uploads', 'public');

       auth()->user()->profile()->update([
         'description' => $data['description'],
         'url' => $data['url'],
         'image' => $imagePath,
       ]);

    return redirect('/users/' . auth()->user()->id);

     }
这是my UserController中的整个更新方法:

$imagePath = request('image')->store('uploads', 'public');
public function update(User $user, Request $request)
     {

       $data = request()->validate([
         'description' => 'nullable',
         'url' => 'nullable',
         'image' => 'nullable',
       ]);

       $imagePath = request('image')->store('uploads', 'public');

       auth()->user()->profile()->update([
         'description' => $data['description'],
         'url' => $data['url'],
         'image' => $imagePath,
       ]);

    return redirect('/users/' . auth()->user()->id);

     }
最后,这是我的edit-profile.blade.php文件中的表单:

@section('content')
<body class="home_body">
  <div class="home_container_div">
      <div class="home_container">
          <div class="home_box_div">

            <form action="{{('/users/' . auth()->user()->id)}}" enctype="multipart/form-data" method="post">
              @csrf
              @method('PATCH')

              <div class="form-group">
                  <label for="description" class="edit_description_label">Description</label>

                  <div class="edit_description_div">
                      <input id="description"
                      type="text"
                      class="form-control @error('description') is-invalid @enderror"
                      name="description"
                      value="{{ old('description' ) ?? auth()->user()->profile->description }}"
                      autocomplete="description" autofocus>

                      @error('description')
                      <div class="invalid-feedback-div">
                        <span class="invalid-feedback" role="alert">
                            <strong>{{ $message }}</strong>
                        </span>
                      </div>
                      @enderror
                  </div>
              </div>

              <div class="form-group">
                  <label for="url" class="edit_title_label">URL</label>

                  <div class="edit_url_div">
                      <input id="url"
                      type="text"
                      class="form-control @error('url') is-invalid @enderror"
                      name="url"
                      value="{{ old('url' ) ?? auth()->user()->profile->url }}"
                      autocomplete="url" autofocus>

                      @error('url')
                      <div class="invalid-feedback-div">
                        <span class="invalid-feedback" role="alert">
                            <strong>{{ $message }}</strong>
                        </span>
                      </div>
                      @enderror
                  </div>
              </div>

              <div class="create_post_image_div">
                <label for="image" class="create_image_label">Profile Image</label>
                <input type="file" class="form-control-file" id="image" name="image">

                @error('image')
                <div class="invalid-feedback-div">
                  <strong>{{ $message }}</strong>
                </div>
                @enderror

                <div class="create_post_btn_div">
                  <button class="create_post_btn">Save Profile</button>
                </div>
              </div>

            </form>

          </div>
      </div>
  </div>
</body>
@endsection
@节(“内容”)
@csrf
@方法('补丁')
描述
@错误('说明')
{{$message}}
@恩德罗
统一资源定位地址
@错误('url')
{{$message}}
@恩德罗
轮廓图像
@错误('图像')
{{$message}}
@恩德罗
保存配置文件
@端部

如何解决此问题?

如果用户未选择任何图像文件,则可以跳过图像上载部分,如下所示:

公共功能更新(用户$User,请求$Request)
{
$data=request()->validate([
“说明”=>“必需”,
“url'=>“必需”,
'image'=>'nullable',
]);
$updateData=[
'description'=>$data['description'],
'url'=>$data['url'],
];
if(请求('image')){
$imagePath=request('image')->store('uploads','public');
$updateData['image']=$imagePath;
}
auth()->user()->profile()->update($updateData);
返回重定向('/users/'.auth()->user()->id);
}

谢谢您的帮助。它工作得很好!