У меня есть эта функция в моем 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");
}
Если кто-то может поделиться PHPэквивалент isDirty()
для старых версий будет отличным подспорьем.Еще раз спасибо.