【发布时间】:2019-02-11 14:24:32
【问题描述】:
我的 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() 的 PHP 等效项,那将是一个很大的帮助。再次感谢。
【问题讨论】:
标签: laravel laravel-5.7