Как сохранить ограничение пользователя в Laravel 5? - PullRequest
0 голосов
/ 06 октября 2019

Может кто-нибудь помочь мне с этой ошибкой? Я делаю заявку, я использую Laravel Framework версии 5.8.35.

ОШИБКА:

Аргумент 1 передан в App \ Http \ Controllers \ Auth \ RegisterController :: validator() должен быть экземпляром Illuminate \ Http \ Request

Контроллер регистра:

Идея управления состоит в том, чтобы контролировать передачу данных между представлением и базой данных. Этот контроллер управляет передачей приложения.

<?php

namespace App\Http\Controllers\Auth;

use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\RegistersUsers;

class RegisterController extends Controller
{
    use RegistersUsers;

    protected $redirectTo = '/home';

    public function __construct()
    {
        $this->middleware('guest');
    }

    protected function validator(Request $request)
    {
        $this->validate($request, [
            'nome' => 'required|max:255',
            'sobrenome' => 'required|max:255',
            'email' => 'required|email|unique:users,email|max:255',
            'cpf' => 'required|min:11|unique:users,cpf',
            'rg' => 'required|min:7|unique:users,rg',
            'telefone' => 'required',
            'celular' => 'required',
            'rua' => 'required|max:255',
            'bairro' => 'required|max:255',
            'complemento' => 'max:255',
            'numero' => 'required',
            'cep' => 'required|min:8',
            'datanascimento' => 'required|date|before:today',
            'password' => 'required|min:8|confirmed|max:60',
        ]);

        $user = User::create(request([
            'nome',
            'sobrenome',
            'email',
            'cpf',
            'rg',
            'telefone',
            'celular',
            'rua',
            'bairro',
            'complento',
            'numero',
            'cep',
            'datanascimento',
            'password'
        ]));

        auth()->login($user);

        return redirect()->to('/home');
    }
}

Просмотр регистра:

Идея представления состоит в том, чтобы показать пользователю более дружественный способ регистрации для использования системы.

@section('content')

<link href="{{ asset('css/sb-admin-2.min.css')}}" rel="stylesheet">

<div class="form-horizontal">
    {{Form::model(['route' => 'register', 'method' => 'post'])}}

    <div class="form-group">
        {{Form::label('nome', 'Nome:',['class' => 'col-lg-2 control-label'])}}
        {{Form::text('nome',null,['class' => 'col-lg-8 form'])}}
        @if ($errors->has('nome'))
        {{$errors->first('nome')}}
        @endif
    </div>

    <div class="form-group">
        {{Form::label('sobrenome', 'Sobrenome:',['class' => 'col-lg-2 control-label'])}}
        {{Form::text('sobrenome',null,['class' => 'col-lg-8 form'])}}
        @if ($errors->has('nome'))
        {{$errors->first('nome')}}
        @endif
    </div>

    <div class="form-group">
        {{Form::label('datanascimento', 'Data de Nascimento:',['class' => 'col-lg-2 control-label'])}}
        {{Form::date('datanascimento',null,['class' => 'col-lg-8 form'])}}
        @if ($errors->has('datanascimento'))
        {{$errors->first('datanascimento')}}
        @endif
    </div>

    <div class="form-group">
        {{Form::label('cpf', 'CPF:',['class' => 'col-lg-2 control-label'])}}
        {{Form::text('cpf',null,['class' => 'col-lg-8 form'])}}
        @if ($errors->has('cpf'))
        {{$errors->first('cpf')}}
        @endif
    </div>

    <div class="form-group">
        {{Form::label('rg', 'RG:',['class' => 'col-lg-2 control-label'])}}
        {{Form::text('rg',null,['class' => 'col-lg-8 form'])}}
        @if ($errors->has('rg'))
        {{$errors->first('rg')}}
        @endif
    </div>

    <div class="form-group">
        {{Form::label('telefone', 'Telefone:',['class' => 'col-lg-2 control-label'])}}
        {{Form::text('telefone',null,['class' => 'col-lg-8 form'])}}
        @if ($errors->has('telefone'))
        {{$errors->first('telefone')}}
        @endif
    </div>

    <div class="form-group">
        {{Form::label('celular', 'Celular:',['class' => 'col-lg-2 control-label'])}}
        {{Form::text('celular',null,['class' => 'col-lg-8 form'])}}
        @if ($errors->has('celular'))
        {{$errors->first('celular')}}
        @endif
    </div>

    <div class="form-group">
        {{Form::label('rua', 'Rua:',['class' => 'col-lg-2 control-label'])}}
        {{Form::text('rua',null,['class' => 'col-lg-8 form'])}}
        @if ($errors->has('rua'))
        {{$errors->first('rua')}}
        @endif
    </div>

    <div class="form-group">
        {{Form::label('bairro', 'Bairro:',['class' => 'col-lg-2 control-label'])}}
        {{Form::text('bairro',null,['class' => 'col-lg-8 form'])}}
        @if ($errors->has('bairro'))
        {{$errors->first('bairro')}}
        @endif
    </div>

    <div class="form-group">
        {{Form::label('complemento', 'Complemento:',['class' => 'col-lg-2 control-label'])}}
        {{Form::text('complemento',null,['class' => 'col-lg-8 form'])}}
        @if ($errors->has('complemento'))
        {{$errors->first('complemento')}}
        @endif
    </div>

    <div class="form-group">
        {{Form::label('numero', 'Número:',['class' => 'col-lg-2 control-label'])}}
        {{Form::text('numero',null,['class' => 'col-lg-8 form'])}}
        @if ($errors->has('numero'))
        {{$errors->first('numero')}}
        @endif
    </div>

    <div class="form-group">
        {{Form::label('cep', 'CEP:',['class' => 'col-lg-2 control-label'])}}
        {{Form::text('cep',null,['class' => 'col-lg-8 form'])}}
        @if ($errors->has('cep'))
        {{$errors->first('cep')}}
        @endif
    </div>

    <div class="form-group">
        {{Form::label('email', 'Email:',['class' => 'col-lg-2 control-label'])}}
        {{Form::text('email',null,['class' => 'col-lg-8 form'])}}
        @if ($errors->has('email'))
        {{$errors->first('email')}}
        @endif
    </div>

    <div class="form-group">
        {{Form::label('password', 'Senha:',['class' => 'col-lg-2 control-label'])}}
        {{Form::password('password',['class' => 'col-lg-8 form', 'type' => 'password'])}}
        @if ($errors->has('password'))
        {{$errors->first('password')}}
        @endif
    </div>
    <div class="form-group">
        {{Form::label('password_confirmation', 'Confirmação Senha:',['class' => 'col-lg-2 control-label'])}}
        {{Form::password('password_confirmation',['class' => 'col-lg-8 form'])}}
        @if ($errors->has('password_confirmation'))
        {{$errors->first('password_confirmation')}}
        @endif
    </div>

    <div class="form-group">
        {{Form::reset('Limpar', array('class' => 'btn btn-danger limpar'))}}
        {{Form::submit('Salvar',array('class'=> 'btn btn-success salvar', 'id' => 'validar'))}}
        {{Form::close()}}
    </div>
</div>
@endsection

1 Ответ

0 голосов
/ 06 октября 2019

Перекрываемая функция validator ожидает, что параметр 1 будет array, и вы передаете ему объект Request посредством внедрения зависимости

Измените параметр на массив и используйтевспомогательная функция request() для получения объекта запроса вместо

protected function validator(array $data)
{
    $this->validate(request(), [
      // rest of code

Объяснение

Класс App\Http\Controllers\Auth\RegisterController использует черту Illuminate\Foundation\Auth\RegistersUsers, поэтому любая отсутствующая функция, такая как скажем register,будет выполняться там.

Давайте посмотрим здесь

/**
 * Handle a registration request for the application.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function register(Request $request)
{
    $this->validator($request->all())->validate(); // <-- Here
    event(new Registered($user = $this->create($request->all())));
    $this->guard()->login($user);
    return $this->registered($request, $user)
                    ?: redirect($this->redirectPath());
}

Мы передаем $request->all(), который является массивом, в валидатор по умолчаниюэто означает, что валидатор функции принимает только array в качестве параметра

, который исходит от vendor/laravel/framework/src/Illuminate/Foundation/helpers.php здесь

if (!function_exists('validator')) {
    /**
     * Create a new Validator instance.
     *
     * @param  array  $data
     * @param  array  $rules
     * @param  array  $messages
     * @param  array  $customAttributes
     * @return \Illuminate\Contracts\Validation\Validator|\Illuminate\Contracts\Validation\Factory
     */
    function validator(array $data = [], array $rules = [], array $messages = [], array $customAttributes = [])
    {
        $factory = app(ValidationFactory::class);
        if (func_num_args() === 0) {
            return $factory;
        }
        return $factory->make($data, $rules, $messages, $customAttributes);
    }
}

И это явно устанавливает требование дляпараметр 1 должен быть массивом

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...