【问题标题】:Display the existing image in edit form and update it using laravel以编辑形式显示现有图像并使用 laravel 更新它
【发布时间】:2017-08-27 16:48:29
【问题描述】:

我可以显示现有文本,如姓名和地址,但无法以编辑形式显示图像。 我的 show.blade.php

 @section('content')
        <p>This is user {{ $profile->name }}</p>
        <p>This is address {{ $profile->address }}</p>
         <img src= "/storage/images/{{ $profile->images }}" style="width:504px;height:228px />     
 @endsection 

这很好用。

现在编辑.blade.php

<div class="container">
  <form method="POST" action="/profiles/{{$profile->id}}" enctype="multipart/form-data">
    {{ method_field('PATCH') }}
    {{ csrf_field() }}
    <div class="form-group">
    name  <input type="text" name="name" value="{{ $profile->name }}" />
    </div>
    <div class="form-group">
     address  <input type="textarea" name="address" value="{{ $profile->address }}" />
    </div> 
    <div class="form-group">
    @if ("/storage/images/{{ $profile->images }}")
        <img src="{{ $profile->image }}">
    @else
            <p>No image found</p>
    @endif
        image <input type="file" name="image" value="{{ $profile->images }}"/>
    </div>
    <div class="form-group">
        <button type="submit" class="btn btn-primary">Submit</button>
    </div>``

</div>

当我尝试保存表单时,更新图像时将不同的图像路径保存在数据库表中,即

 /tmp/phpHs0Io6

存储控制器是

public function store(Request $request)
{
       $this->validate($request, [
        'name' => 'required|max:255',
         'address' => 'nullable' ,
    ]);
       $profile = new profile;
       $profile-> user_id = auth()->id();
       $profile-> name = $request->name;
       $profile-> address = $request->address;         
       $request->image->store('public/images');
       $path = $request->image->hashName();
       $profile-> images = $path;
       $profile->save();
       return redirect('/home');
}

更新控制器是

public function update(Request $request, profile $profile)
    {
        $this->validate($request, [
            'name' => 'required|max:255',
             'address' => 'nullable' ,
        ]);
           $profile->update($request->all());
           $profile-> name = $request->name;
           $profile-> address = $request->address;         
           $request->image->store('public/images');
           $path = $request->image->hashName();
           $profile-> images = $path;
           $profile->save();
           return redirect('/home');
    }

【问题讨论】:

    标签: forms laravel


    【解决方案1】:

    首先,在您保存图片之前,您必须检查用户是否上传了图片;你保存图片的方式不对,使用这个模式;

        public function update(Request $request, profile $profile)
        {
            $this->validate($request, [
                'name' => 'required|max:255',
                 'address' => 'nullable' ,
            ]);
               $profile->update($request->all());
               $profile-> name = $request->name;
               $profile-> address = $request->address;         
    
               if(Input::hasFile('image')){
               $file = Input::file('image');
               $destinationPath = public_path(). '/uploads/';
               $filename = $file->getClientOriginalName();
               $file->move($destinationPath, $filename);
    
              //then proceeded to save user
              $profile-> images =           
              $destinationPath.$filename;
              $profile->save();
              return redirect('/home');
              }else{
    
    
               $profile->save();
               return redirect('/home');
            }
    }
    

    更新功能相同。

    【讨论】:

      【解决方案2】:

      不要直接在 if 条件中写入路径,而是使用file_exists 函数来检查您的图像是否存在于给定位置。欲了解更多信息,请查看此link

      【讨论】:

        【解决方案3】:

        我有点晚了,但我有一个建议: 因此,如果您的图片被上传到存储中,此代码可能会起作用,您仍然需要调整图片大小,使其不会覆盖整个网站:

                                        <div class="pull-right">
                                            <label for="image">Choosen Datei:</label>
                                            <img src="{{Storage::disk('local')->url($profile->image)}}" alt="">
                                            <label for="image"
                                                >Choose data</label
                                            >
                                            <input
                                                type="file"
                                                name="image"
                                                id="image"
                                                class="form-control"
                                            />
                                        </div>
        

        【讨论】:

          猜你喜欢
          • 2022-01-05
          • 2021-07-31
          • 2021-05-10
          • 1970-01-01
          • 2019-05-09
          • 1970-01-01
          • 1970-01-01
          • 2019-02-27
          • 2020-03-01
          相关资源
          最近更新 更多