Вызов неопределенного метода Illuminate \ Http \ RedirectResponse :: validate () - PullRequest
1 голос
/ 28 июня 2019

Я хочу, чтобы при сбое валидатора переходил к той же части регистрационной формы в home.blade.php, а не к началу страницы.

Может ли кто-нибудь помочь мне сделать это?Registercontroller.php

protected function validator(array $data)
{
    $validator =  Validator::make($data, [
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:8', 'confirmed'],
        'phone' => ['required', 'string'],
    ]);
    if ($validator->fails()) {
            return redirect('/#register')
                        ->withErrors($validator)
                        ->withInput();
        }
}


/**
 * Create a new user instance after a valid registration.
 *
 * @param  array  $data
 * @return \App\User
 */
protected function create(array $data)
{
    $customization = New Customization();
    $user = User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'phone' => $data['phone'],  
        'password' => Hash::make($data['password']),
        'cuenta' => $data['cuenta'],
        'avatar' => "https://i0.wp.com/www.winhelponline.com/blog/wp-content/uploads/2017/12/user.png?fit=256%2C256&quality=100&ssl=1",
    ]);
        $customization->user_id = $user->id;
        $customization->save();
    return $user;
}

Это ошибка на laravel:

Пожалуйста, мне нужна помощь

Ошибка Laravel

1 Ответ

0 голосов
/ 28 июня 2019

Просто удалите из функции validator следующее:

if ($validator->fails()) {
    return redirect('/#register')
        ->withErrors($validator)
        ->withInput();
}

Функция проверки ожидает, что будет возвращен экземпляр \Illuminate\Contracts\Validation\Validator.

Итак, измените на:

return Validator::make([
    // Your rules here
]);

Контроллер автоматически перенаправит обратно с ошибками при ошибке.

Если вы хотите перенаправить куда-то еще при сбое, вы можете перезаписать метод register, добавив в свой контроллер следующее:

public function register(Request $request)
{
    $validator = $this->validator($request->all());

    if ($validator->fails()) {
        return redirect('/#register')
            ->withErrors($validator)
            ->withInput();
    }

    event(new Registered($user = $this->create($request->all())));

    $this->guard()->login($user);

    return $this->registered($request, $user)
                    ?: redirect($this->redirectPath());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...