Skip to content
Advertisement

Why is my validator is not validating in Laravel?

Why is my validator is not validating the input-email field, it accepts anything!

This is my controller to update the database. The name in form is correct Edit: This is my entire code, I post here my code with just email but one guy said that is working, so why this is not working with my entire code of update database?

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');
}

Advertisement

Answer

you must use below code after define $validator

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


if ($validator->fails())
{
   return redirect()->back()->withErrors($validator)->withInput();
}
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement