首页 > 解决方案 > Laravel:如何同时编辑用户信息和上传头像?

问题描述

我一直在尝试编辑用户信息并从同一个表单上传个人资料图片。我能够使用下面的代码编辑用户信息,

ProfileController.php
public function index()
    {
        $user = Auth::user();
        return view('profile.profile', ['user' => $user]);
    }

    public function edit()
    {
        $user = Auth::user();
        return view('profile.editprofile', ['user' => $user]);
    }

    public function update(Request $request)
    {      
        $user_form = $request->all();
        $user = Auth::user();

        unset($user_form['_token']);

        $user->fill($user_form)->save();

        return redirect('/profile');
    }

但是,当我也尝试上传个人资料图片时(我将 profile_image 列添加到数据库中)并更改了这样的代码

ProfileController.php
public function index()
    {
        $user = Auth::user();
        return view('profile.profile', ['user' => $user]);
    }

    public function edit()
    {
        $user = Auth::user();
        return view('profile.editprofile', ['user' => $user]);
    }

    public function update(Request $request, User $user)
    {

        $user->id = $request->user()->id;
        $user->name = $request->name;
        $user->email = $request->email;

        if ($request->hasFile('image')) {
            if (is_file($user->image)) {
                Storage::delete('public/image/' . $user->image);
            }
            $path = $request->file('image')->store('public/image');
            $user->image = basename($path);
        }

        $user = Auth::user();

        $user->update();

        return redirect('/tests');
    }

没有任何内容被编辑或上传。我只会被重定向,不会显示任何错误。

任何帮助将不胜感激,因为我尝试了多种方法都没有成功。

先感谢您。

标签: phpdatabaselaravel

解决方案


$user->name = $request->name;

if (is_file($user->image)) {
                Storage::delete('public/image/' . $user->image);
}

这段代码是不必要的。谢谢!


推荐阅读