php - 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');
}
没有任何内容被编辑或上传。我只会被重定向,不会显示任何错误。
任何帮助将不胜感激,因为我尝试了多种方法都没有成功。
先感谢您。
解决方案
$user->name = $request->name;
if (is_file($user->image)) {
Storage::delete('public/image/' . $user->image);
}
这段代码是不必要的。谢谢!
推荐阅读
- bash - 如何取消 EXIT sigspec?
- javascript - 如何在对象键映射中获取迭代器
- c# - 如何在 .exe 文件中包含 mp3 音乐?
- c - string[10][20] 类型的 2D 字符串与 C 中 *string [10][20] 类型的 2D 字符串有什么区别?
- sass - 媒体查询中没有“!important”就不会改变样式
- sublimetext3 - 在崇高的文本编辑器中的文件夹上获取一些图标
- django - 如何在 Django 的管理页面中的两个外键实例之间实现依赖/链式下拉列表?
- r - 仅查找一次包含某个字符的数据框行
- javascript - 从 node.js express 服务器运行 ajax 函数后如何在新页面中显示结果?
- oracle - 插入行类型记录,在 Oracle 的 PL/SQL 中作为参数传递。我怎样才能做到这一点?