我的GlobalController中有这个功能:
public function edit(Request $request, $id)
{
$isChanged = false;
if (!$request) {
$isChanged = true;
}
$user = User::find($id);
$user->first_name = $request->first_name;
$user->last_name = $request->last_name;
$user->email = $request->email;
$user->birth_date = $request->birth_date;
$user->updated_at = \Carbon\Carbon::now();
$user->save();
if ($isChanged == true) {
return redirect()->back()->with('updated', "Successfully updated $request->first_name");
} else {
return redirect()->back()->with('alert', "No changes $request->first_name");
}
}
在我看来,这和这个函数有关,我有:
<div class="form-row">
<div class="form-group col-md-6">
<label for="first_name">First Name</label>
<input name="first_name" type="text" class="form-control" id="" value="{{ $user->first_name }}" required>
</div>
<div class="form-group col-md-6">
<label for="last_name">Last Name</label>
<input name="last_name" type="text" class="form-control" id="" value="{{ $user->last_name }}" required>
</div>
<div class="form-group col-md-6">
<label for="email">E-mail</label>
<input name="email" type="email" class="form-control" id="" value="{{ $user->email }}" required>
</div>
<div class="form-group col-md-6">
<label for="birth_date">Birth Date</label>
<input name="birth_date" type="date" class="form-control" value="{{ $user->birth_date }}" required>
</div>
</div>
基本上,此模式显示数据库中的当前详细信息(
value="{{ $user->last_name }}"
我希望发生的是,当用户在不做任何更改的情况下保存编辑时,它将继续执行控制器功能中的第二个返回,即
return redirect()->back()->with('alert', "No changes $request->first_name");
但是,每当我试图保存并且不应用任何更改时,它总是首先返回,即
return redirect()->back()->with('updated', "Successfully updated $request->first_name");
我怀疑这可能是因为我在上面提到的模态视图中预定义的值。有什么解决办法吗?我想通知用户,如果没有进行任何更改,它将继续进行第二次返回。
如果需要进一步的详细信息来解决此问题,请通知我。
编辑:
在@mozammil和@manzurul hoque rumi的帮助下,我可以使用以下功能解决我的问题:
public function edit(Request $request, $id)
{
$user = User::find($id);
$user->first_name = $request->first_name;
$user->last_name = $request->last_name;
$user->email = $request->email;
$user->birth_date = $request->birth_date;
$user->locale_id = $request->locale_id;
$isUserModified = $user->isDirty();
$user->updated_at = \Carbon\Carbon::now();
$user->save();
return $isUserModified
? redirect()->back()->with('updated', "Successfully updated $request->first_name")
: redirect()->back()->with('alert', "No changes applied for $request->first_name");
}
如果有人可以共享相当于
isDirty()
对于旧版本将是一个很大的帮助。再次感谢。