O formulário de contato já está implementado, mas para garantir uma boa experiência do usuário, é essencial adicionar validação e feedback para indicar erros ou sucesso no envio da mensagem. O CodeIgniter 4 oferece um sistema de validação robusto que facilita essa implementação.
Configurando a Validação no Controller
No app/Controllers/ContatoController.php, modificamos o método enviar() para incluir regras de validação:
namespace App\Controllers;
use CodeIgniter\Controller;
use CodeIgniter\Email\Email;
class ContatoController extends Controller
{
public function index()
{
return view('contato');
}
public function enviar()
{
$validacao = \Config\Services::validation();
$regras = [
'nome' => 'required|min_length[3]',
'email' => 'required|valid_email',
'mensagem'=> 'required|min_length[10]'
];
if (!$this->validate($regras)) {
return redirect()->to('/contato')->withInput()->with('erros', $validacao->getErrors());
}
$email = service('email');
$email->setFrom('seuemail@seudominio.com', 'Site CodeIgniter');
$email->setTo('destinatario@seudominio.com');
$email->setSubject('Nova mensagem de contato');
$email->setMessage(
"Nome: " . $this->request->getPost('nome') . "\n" .
"Email: " . $this->request->getPost('email') . "\n" .
"Mensagem: " . $this->request->getPost('mensagem')
);
if ($email->send()) {
return redirect()->to('/contato')->with('sucesso', 'Mensagem enviada com sucesso!');
} else {
return redirect()->to('/contato')->with('erro', 'Erro ao enviar mensagem.');
}
}
}
As regras de validação garantem que:
- O nome seja obrigatório e tenha no mínimo 3 caracteres.
- O e-mail seja obrigatório e tenha um formato válido.
- A mensagem seja obrigatória e tenha pelo menos 10 caracteres.
Exibindo Mensagens de Erro no Formulário
Agora precisamos exibir os erros de validação no formulário. No arquivo app/Views/contato.php, adicione:
<h1>Entre em Contato</h1>
<?php if(session()->getFlashdata('sucesso')): ?>
<p style="color: green;"><?= session()->getFlashdata('sucesso') ?></p>
<?php endif; ?>
<?php if(session()->getFlashdata('erro')): ?>
<p style="color: red;"><?= session()->getFlashdata('erro') ?></p>
<?php endif; ?>
<?php if(session()->getFlashdata('erros')): ?>
<ul style="color: red;">
<?php foreach(session()->getFlashdata('erros') as $erro): ?>
<li><?= $erro ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<form action="<?= site_url('contato/enviar') ?>" method="post">
<label>Nome:</label>
<input type="text" name="nome" value="<?= old('nome') ?>" required><br>
<label>Email:</label>
<input type="email" name="email" value="<?= old('email') ?>" required><br>
<label>Mensagem:</label>
<textarea name="mensagem" required><?= old('mensagem') ?></textarea><br>
<button type="submit">Enviar</button>
</form>
Agora, se o usuário preencher o formulário incorretamente, os erros serão exibidos e os campos manterão os valores digitados.
Conclusão
Com essas melhorias, o formulário de contato agora fornece um retorno claro ao usuário, garantindo que apenas mensagens válidas sejam enviadas.
No próximo post, vamos melhorar o layout da aplicação, criando um template base para todas as páginas.
Se você ou sua empresa precisa de suporte para desenvolvimento com CodeIgniter 4, a Saldaris Consultoria pode ajudar. Entre em contato pelo formulário no final da página para saber mais sobre nossos serviços.
Erro: Formulário de contato não encontrado.


