php - 如何在 laravel 的编辑 View 中更新图像?

标签 php laravel mongodb eloquent

在 Laravel 中,我的编辑 View 中有一个名为 Profile Picture 的字段,每当我单击“编辑”按钮时,我都会在编辑 View 中从数据库中获取所有值,但我没有获取图像,而且如果我每次都单击“提交”按钮我必须上传图片,否则我无法进一步处理 我想要 如果我不上传新图片,那么表单将自动考虑旧的个人资料图片

我的 Blade 文件是这样的

<div class="col-md-6">
    <div class="form-group">
        <label for="photo">Profile Picture :<span class="danger">*</span> </label>
        <div class="row">
            <div class="col-md-9">
                    <input type="file" class="form-control" id="file" name="file">
            </div>
            <div class="col-md-3">
                @foreach ($empProfilePic as $empProfilePicture)
                    @if($employee->id == $empProfilePicture->id)
                        <img src="uploads/images/{{ $empProfilePicture->file }}" id="profile-img-tag" height="100" width="100">
                    @endif
                @endforeach
            </div>
        </div>
    </div>
</div>

Controller 文件

 public function updateEmployee(Request $request, $id)
    {
        $employee = User::find($id);
        //Get inputs for personal detail
        $firstName = $request->get('firstName');
        $middleName = $request->get('middleName');
        $lastName = $request->get('lastName');
        $gender = $request->get('gender');
        $city = $request->get('city');
        $state = $request->get('state');
        $localAddress = $request->get('localAddress');
        $permanentAddress = $request->get('permanentAddress');
        $personalEmail = $request->get('personalEmail');
        $mobileNumber = $request->get('mobileNumber');
        $companyEmail = $request->get('companyEmail');
        $empId = $request->get('empId');
        $department = $request->get('department');
        $designation = $request->get('designation');
        $status = $request->get('status');
        $totalExperience = $request->get('totalExperience');
        $aboutMe = $request->get('aboutMe');
        $roleName = $request->get('role');
        $role = $request->get('role');

        if ($role == 'hr') 
        {
            $role = '5c8a51ed650fbd5398503043';
        }
        else 
        {
            $role = '5c8a51ed650fbd5398503044';    
        }


        // //Store Image In Folder
        $file = $request->file('file');
        $name = $file->getClientOriginalName();
        $file->move('uploads/images', $name);

        if (file_exists(public_path($name =  $file->getClientOriginalName()))) 
        {
            unlink(public_path($name));
        };


        $accountHolderName = $request->get('accountHolderName');
        $accountNumber = $request->get('accountNumber');
        $bankName = $request->get('bankName');
        $ifscCode = $request->get('ifsc_code');
        $panNumber = $request->get('panNumber');
        $branchName = $request->get('branchName');


        //Enter in database
        $employee->role_id = $role;
        $employee->role_name = $roleName;
        $employee->username = $firstName;

        //Update Image
        $employee->file = $name;
        $employee->personal_email = $personalEmail;
        $employee->company_email = $companyEmail;
        $employee->status = $status;

        $personalDetail = ([
            'emp_id' => $empId,
            'first_name' => $firstName,
            'middle_name' => $middleName,
            'last_name' => $lastName,
            'gender' => $gender,
            'city' => $city,
            'state' => $state,
            'local_address' => $localAddress,
            'permanent_address' => $permanentAddress,
            'personal_email' => $personalEmail,
            'mobile_number' => $mobileNumber,
            'department' => $department,
            'designation' => $designation,
            'total_experience' => $totalExperience,
            'about_me' => $aboutMe,
        ]);

        $bankDetail = ([
            'account_holder_name' => $accountHolderName,
            'account_number' => $accountNumber,
            'bank_name' => $bankName,
            'ifsc_code' => $ifscCode,
            'pan_number' => $panNumber,
            'branch_name' => $branchName,
        ]);

        $employee->status = $status;
        $employee->personal_detail = $personalDetail;
        $employee->bank_detail = $bankDetail;

        $employee->save();

        return redirect('list-of-employees')->with('Success', 'Data Updated Successfully!');
    }

谁能帮忙,先谢谢了

最佳答案

在 Controller 中:

更新文件代码:

仅当您选择要更新的文件时才会更新。

这里我使用 Employee 模型,你可以用你的模型替换

public function update(Request $request, $id){

     $employee = Employee::find($id);

     if($request->file != ''){        
          $path = public_path().'/uploads/images/';

          //code for remove old file
          if($employee->file != ''  && $employee->file != null){
               $file_old = $path.$employee->file;
               unlink($file_old);
          }

          //upload new file
          $file = $request->file;
          $filename = $file->getClientOriginalName();
          $file->move($path, $filename);

          //for update in table
          $employee->update(['file' => $filename]);
     }
}

关于php - 如何在 laravel 的编辑 View 中更新图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56231229/

相关文章:

mongodb - Spring data mongodb聚合场景

php - 将函数结果传递到sql

php - MySQL通过过滤器选择产品

javascript - Prop 在组件之间以某种方式混合

php - laravel - 使用查询生成器将对象数组插入表中的最有效方法

php - 使用没有全局作用域的 Laravel 触摸

node.js - Mongoose 查询不返回值

arrays - Node/Mongoose - 如果更新期间对象尚不存在,则无法在数组中创建对象

php - Laravel 多页面多语言路由

php - 签名版本 4 签名过程在 PHP 中访问 API 网关端点