laravel5.6 Как мне обновить данные пользователя после проверки формы запроса? - PullRequest
0 голосов
/ 21 сентября 2018

профессионалов.

Я не могу использовать запрос формы для действия пользователя по обновлению, хотя я пытался использовать запрос формы.Я хочу использовать запрос формы.

По праву логика проверки формы запроса работает, но после этого данные, прошедшие проверку, не могут быть сохранены.(Также нет ошибок, они должны быть перенаправлены после обновления данных.)

Когда я не использую запрос формы (я пишу логику проверки и метод проверки непосредственно в действии обновления), данные могут быть сохраненыпосле прохождения проверки.

Вот код ...

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', '情報を編集しました');
}

UsersController - с помощью запроса формы

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', '情報を編集しました');
}

Форма запроса

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
// email項目で自分を無視するときにundefined $userの回避のため
use Illuminate\Support\Facades\Auth;

class UserProfileUpdateRequest extends FormRequest
{
/**
 * Determine if the user is authorized to make this request.
 *
 * @return bool
 */
public function authorize()
{
    return true;
}

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    // email項目で自分を無視するときにundefined $userの回避のため
    $user = Auth::user();

    return [
        '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',
                    Rule::unique("users")->ignore($user->id)],

        'email_confirmation' => 'required|email|same:email',

        'birth_day' => 'required|date',

        'address' => 'required|max:40|
                      regex:/^[^ -~。-゚\x00-\x1f\t]+$/u',

        'job_type_id' => 'required',

        'password' => 'required|min:4|max:8|
                       regex:/^[a-zA-Z0-9]+$/u',
    ];
}
}

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Вы пытались записать проверенные данные в переменную:

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

(как указано в документах ).

Метод validate() будетверните все очищенные данные после их проверки, чтобы вы могли зафиксировать этот возврат.

После этого сохраните поля в записи, используя новую переменную:

$user->name = $validatedData->name;
...
0 голосов
/ 21 сентября 2018

Должно быть:

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

Не:

return redirect('users/')->with('message', '情報を編集しました');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...