如何设置用户配置文件
How to set user profile
我想让用户为自己创建一个配置文件,但我不知道该怎么做。
当我执行此代码时,所有用户的配置文件都会更改并成为一个
这是用户面板的控制器
public function UpdateUser(Request $request, User $user)
{
if (!is_null($request->user_image && $request->job)) {
$data = $request->validate([
'user_image' => ['required', 'mimes:jpg,png,jpeg', 'max:5120'],
'job' => ['required', 'min:3', 'max:14'],
]);
$file = $request->file('user_image');
$file_path = '/images/' . 'user' . '/';
$file->move(public_path($file_path), $file->getClientOriginalName());
$data['user_image'] = $file_path . $file->getClientOriginalName();
}
User::query()->update($data);
return redirect('/user-profile');
}
这是 blade 的代码:
<form method="post" action="{{route('user.update')}}" enctype="multipart/form-data">
@method('PATCH')
@csrf
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" id="basic-addon1">آپلود عکس</span>
</div>
<input type="file" name="user_image" class="form-control" placeholder="user_image" aria-label="user_image"
aria-describedby="basic-addon1" value="{{old('user_image')}}">
</div>
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">تخصص</label>
<input type="text" class="form-control" name="job" id="job" placeholder=" تخصص خود را وارد کنید"
value="{{old('job')}}">
</div>
<div class=" d-flex">
<button type="submit" class=" btn btn-success mr-auto">
<div>ثبت</div>
</button>
</div>
</form>
在这一行中,您查询所有用户而不是特定用户
User::query()->update($data);
试试这个
$user->update($data);
User::query()->update(...)
将更新 table 中的每一行,因为您没有以任何方式限制它。
由于此页面是针对当前经过身份验证的用户的,因此请使用 $request
中的 user()
方法。您可以改用 Auth
门面或 auth()
辅助函数。
$request->user()->update($data);
但这不是您唯一的问题。 !is_null($request->user_image && $request->job)
将始终是 true
,因为 $request->user_image && $request->job
将始终产生一个 boolean
永远不会被视为 null
的值,因此您不妨删除 if
声明。
此外,(在这种情况下并不重要,因为 if
语句总是 运行)如果您在 if
语句中定义了一个变量,您还应该定义一个默认值,即当条件为 false
.
时
public function UpdateUser(Request $request)
{
$data = $request->validate([
'user_image' => ['required', 'mimes:jpg,png,jpeg', 'max:5120'],
'job' => ['required', 'min:3', 'max:14'],
]);
$file = $request->file('user_image');
$file_path = '/images/' . 'user' . '/';
$file->move(public_path($file_path), $file->getClientOriginalName());
$data['user_image'] = $file_path . $file->getClientOriginalName();
$request->user()->update($data);
return redirect('/user-profile');
}
我想让用户为自己创建一个配置文件,但我不知道该怎么做。 当我执行此代码时,所有用户的配置文件都会更改并成为一个 这是用户面板的控制器
public function UpdateUser(Request $request, User $user)
{
if (!is_null($request->user_image && $request->job)) {
$data = $request->validate([
'user_image' => ['required', 'mimes:jpg,png,jpeg', 'max:5120'],
'job' => ['required', 'min:3', 'max:14'],
]);
$file = $request->file('user_image');
$file_path = '/images/' . 'user' . '/';
$file->move(public_path($file_path), $file->getClientOriginalName());
$data['user_image'] = $file_path . $file->getClientOriginalName();
}
User::query()->update($data);
return redirect('/user-profile');
}
这是 blade 的代码:
<form method="post" action="{{route('user.update')}}" enctype="multipart/form-data">
@method('PATCH')
@csrf
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" id="basic-addon1">آپلود عکس</span>
</div>
<input type="file" name="user_image" class="form-control" placeholder="user_image" aria-label="user_image"
aria-describedby="basic-addon1" value="{{old('user_image')}}">
</div>
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">تخصص</label>
<input type="text" class="form-control" name="job" id="job" placeholder=" تخصص خود را وارد کنید"
value="{{old('job')}}">
</div>
<div class=" d-flex">
<button type="submit" class=" btn btn-success mr-auto">
<div>ثبت</div>
</button>
</div>
</form>
在这一行中,您查询所有用户而不是特定用户
User::query()->update($data);
试试这个
$user->update($data);
User::query()->update(...)
将更新 table 中的每一行,因为您没有以任何方式限制它。
由于此页面是针对当前经过身份验证的用户的,因此请使用 $request
中的 user()
方法。您可以改用 Auth
门面或 auth()
辅助函数。
$request->user()->update($data);
但这不是您唯一的问题。 !is_null($request->user_image && $request->job)
将始终是 true
,因为 $request->user_image && $request->job
将始终产生一个 boolean
永远不会被视为 null
的值,因此您不妨删除 if
声明。
此外,(在这种情况下并不重要,因为 if
语句总是 运行)如果您在 if
语句中定义了一个变量,您还应该定义一个默认值,即当条件为 false
.
public function UpdateUser(Request $request)
{
$data = $request->validate([
'user_image' => ['required', 'mimes:jpg,png,jpeg', 'max:5120'],
'job' => ['required', 'min:3', 'max:14'],
]);
$file = $request->file('user_image');
$file_path = '/images/' . 'user' . '/';
$file->move(public_path($file_path), $file->getClientOriginalName());
$data['user_image'] = $file_path . $file->getClientOriginalName();
$request->user()->update($data);
return redirect('/user-profile');
}