Простой вопрос: как изменить (хешировать) значение запроса перед его сохранением с помощью администратора Laravel Backpacker CRUD?
Насколько я понимаю, это нужно сделать где-то до того, как эти методы будут выполнены в контроллере crud:
public function store(StoreRequest $request)
{
return parent::storeCrud();
}
public function update(UpdateRequest $request)
{
return parent::updateCrud();
}
но я понятия не имею, как это сделать правильно.
редактировать: запрос не Request
объект, а скорее StoreRequest
или же UpdateRequest
это выглядит примерно так:
исправлять:
public function update(UpdateRequest $request)
{
// Hash password before save
if (!empty($request->password)) {
$request->offsetSet('password', Hash::make($request->password));
}
return parent::updateCrud($request); // <-- Pass the modified request, otherwise the CRUD reads it again from post data
}
Вы можете обновить значения $ request, используя offsetSet метод
$request->offsetSet('name', $newName);
Редактировать: Чтобы обновить пароль пользователя, вы можете сделать что-то вроде этого:
public function update_password(Request $request)
{
$user = User::find(Auth::user()->id);
if (Hash::check($request->old_password, $user->password)) {
$user->fill([
'password' => Hash::make($request->password)
])->update();
return redirect()->back()->with('message' => 'Your password has been updated.');
}
else {
return redirect()->back()->with('message' => 'The password entered do not match our records.');
}
}
Я не проверял код, но он должен работать. Теперь обновите его в соответствии с вашими потребностями.
Если вы спрашиваете о том, как изменить данные в $request
переменная, вы можете просто сделать это:
$request->property = 'New value';
Также вы можете добавить данные для повторного запроса (не в переменную):
request()->request->add(['key' => 'value']);