laravel5.6使用请求表单验证后如何更新用户数据

时间:2018-09-21 03:24:30

标签: php laravel laravel-5

专业人员。

尽管我尝试使用表单请求,但无法将表单请求用于用户的更新操作。 我想使用表单请求。

好的,请求表单的验证逻辑有效,但之后,数据  通过验证的文件无法保存。 (也没有错误,更新数据后应将其重定向。)

当我不使用表单请求时(我直接在更新操作中编写验证逻辑和validate方法),通过验证后即可保存数据。

这里是代码...

UsersController-具有验证逻辑

import os
for path in data_paths:
      for file in os.listdir(path):
             data_and_seg_arr = [np.load(file, ...

UsersController-使用表单请求

use Illuminate\Http\Request;

public function update(Request $request, $user) {

    $user = User::findOrFail($user);

    $request->validate([
            'name'               => [
                'required',
                'string',
                'max:10',
                'regex: /^[^ -~。-゚\x00-\x1f\t]+$/u'
            ],
            'name_kana'          => [
                'required',
                'string',
                'max:20',
                'regex: /^[^ -~。-゚\x00-\x1f\t]+$/u',
                'regex: /^[ァ-ヶー]+$/u'
            ],
            'email'              => [
                'required',
                'string',
                'email',
                'max:255',
                Rule::unique('users')->ignore($user->id),
            ],
            'email_confirmation' => [
                'required',
                'same:email'
            ],
            'birth_day'          => [
                'required',
                'date'
            ],
            'address'            => [
                'required',
                'max:40',
                'regex: /^[^ -~。-゚\x00-\x1f\t]+$/u'
            ],
            'job_type_id'        => [
                'required'
            ],
        ]
    );

    $user->name = $request->name;
    $user->name_kana = $request->name_kana;
    $user->email = $request->email;
    $user->birth_day = $request->birth_day;
    $user->address = $request->address;
    $user->job_type_id = $request->job_type_id;

    $user->save();

    return redirect('users/')->with('message', '情報を編集しました');
}

表格请求

use App\Http\Requests\UserProfileUpdateRequest;

public function update(UserProfileUpdateRequest $request, $user) {

    $user = User::findOrFail($user);

    $user->name = $request->name;
    $user->name_kana = $request->name_kana;
    $user->email = $request->email;
    $user->birth_day = $request->birth_day;
    $user->address = $request->address;
    $user->job_type_id = $request->job_type_id;

    $user->save();

    return redirect('users/')->with('message', '情報を編集しました');
}

2 个答案:

答案 0 :(得分:0)

应该是:

return redirect('/users')->with('message', '情報を編集しました');

不是:

return redirect('users/')->with('message', '情報を編集しました');

答案 1 :(得分:0)

您是否试图在变量中捕获经过验证的数据:

$validatedData = $request->validate(...);

(在docs中指定)。

validate()方法将在检查后返回所有经过清理的数据,因此您将捕获此返回值。

然后,使用新变量将字段保存到记录:

$user->name = $validatedData->name;
...