3

一个简单的问题:如何在使用 Laravel Backpacker CRUD 管理员保存请求值之前修改(散列)请求值?

据我了解,应该在这些方法在 crud 控制器中执行之前的某个地方完成:

public function store(StoreRequest $request)
{
    return parent::storeCrud();
}

public function update(UpdateRequest $request)
{
    return parent::updateCrud();
}

但我不知道如何正确地做到这一点。

编辑:请求不是一个对象,Request而是看起来像这样: StoreRequestUpdateRequest在此处输入图像描述

修复

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
}
4

2 回答 2

3

您可以使用offsetSet方法更新 $request 值

$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.');
    }
}

我没有检查代码,但它应该可以工作。现在根据您的需要更新它。

于 2016-12-13T12:37:49.593 回答
2

如果您询问如何修改$request变量中的数据,您可以这样做:

$request->property = 'New value';

此外,您可以将数据添加到 reuqest 本身(而不是变量):

request()->request->add(['key' => 'value']);
于 2016-12-13T12:33:39.923 回答