Почему мой валидатор не проверяется в Laravel? - PullRequest
1 голос
/ 19 января 2020

Почему мой валидатор не проверяет поле input-email, он принимает все!

Это мой контроллер для обновления базы данных. Правильно указано имя в форме. Редактировать: Это весь мой код, я публикую здесь свой код только по электронной почте, но один парень сказал, что это работает, так почему это не работает со всем моим кодом обновления базы данных?

public function atualizar(Request $req)
{
    $erros = [
        'input-nome.max' => 'Introduziu carateres acima do máximo no campo do nome!',
        'input-facebook.max' => 'Introduziu carateres acima do máximo no campo do facebook!',
        'input-instagram.max' => 'Introduziu carateres acima do máximo no campo do instagram!',
        'input-descricao.max' => 'Introduziu carateres acima do máximo no campo da descrição!',
        'input-profissao.max' => 'Introduziu carateres acima do máximo no campo da profissão!',
        'input-imagem.max' => 'O tamanho máximo do ficheiro é de 10mb!',
        'image' => 'O ficheiro que inseriu não é imagem!',
        'mimes' => 'A extensão da imagem não é permitida, apenas JPEG, JPG e PNG!',
        'email' => 'Introduza um e-mail válido!'
    ];
    $validator = Validator::make($req->all(), [
        'input-nome' => 'max:25',
        'input-email' => 'nullable|required_with:input-email|email:rfc,dns,filter',
        'input-facebook' => 'max:40',
        'input-instagram' => 'max:40',
        'input-profissao' => 'max:25',
        'input-descricao' => 'max:120',
        'input-imagem' => 'image|mimes:jpeg,png,jpg|max:10240'
    ], $erros);

    $id = $req->input('input-id');

    $membrosEquipa = DB::table('equipa')
        ->where('id', $id)
        ->get();

    $inputEmail = $req->input('input-email');
    if (!isset($inputEmail)) {
        $inputEmail = null;
    }
    if ($req->filled('input-email')) {
        $inputEmail = $req->input('input-email');
    }
    $inputNome = $req->input('input-nome');
    $inputFacebook = $req->input('input-facebook');
    $inputInstagram = $req->input('input-instagram');
    $inputProfissao = $req->input('input-profissao');
    $inputDescricao = $req->input('input-descricao');
    $inputImagem = $req->file('input-imagem');

    foreach ($membrosEquipa as $membro) {
        if (!isset($inputNome)) {
            $inputNome = $membro->nome;
        }
        if (!isset($inputFacebook)) {
            $inputFacebook = $membro->facebook;
        }
        if (!isset($inputInstagram)) {
            $inputInstagram = $membro->instagram;
        }
        if (!isset($inputProfissao)) {
            $inputProfissao = $membro->profissao;
        }
        if (!isset($inputDescricao)) {
            $inputDescricao = $membro->descricao;
        }
        if (isset($inputImagem)) {
            Storage::delete($membro->imagem);
            $inputImagem = $req->file('input-imagem')->store('storage/equipa');
        } else {
            $inputImagem = $membro->imagem;
        }
    }

    $timestamp = date('Y-m-d H:i:s');

    DB::table('equipa')
        ->where('id', $id)
        ->update([
            'nome' => $inputNome,
            'email' => $inputEmail,
            'facebook' => $inputFacebook,
            'instagram' => $inputInstagram,
            'profissao' => $inputProfissao,
            'descricao' => $inputDescricao,
            'imagem' => $inputImagem,
            'updated_at' => $timestamp
        ]);

    return redirect('/editar/equipa/')->with('status', 'Membro da equipa atualizado com sucesso');
}

1 Ответ

0 голосов
/ 19 января 2020

Вы должны использовать приведенный ниже код после определения $ validator

 $validator = Validator::make($req->all(), [
        'input-email'       => 'email:rfc,dns|required'
    ],$erros);


if ($validator->fails())
{
   return redirect()->back()->withErrors($validator)->withInput();
}
...