Boa tarde. A validação de um formulário (por exemplo, um cadastro de cliente), é feita direto no Controller ou é melhor criar uma classe para isso?
Penso que seja melhor criar uma classe, pois o controller iria ficar muito poluído.
Boa tarde. A validação de um formulário (por exemplo, um cadastro de cliente), é feita direto no Controller ou é melhor criar uma classe para isso?
Penso que seja melhor criar uma classe, pois o controller iria ficar muito poluído.
Também penso dessa forma, já que em todo o momento do curso deixamos o código sempre bem separado.
Bom, acho que o melhor mesmo é criar uma classe.
A dúvida agora é saber onde criar esta classe. Pensei em criar uma pasta chamada "Regras" e colocar esta e todas as classes de validação lá dentro.
É correto assim?
Fala, Flávio.
Ótima pergunta e a resposta é: Depende. hahaha
O propósito do curso foi primariamente apresentar o MVC e o MVC não apresenta solução pra essa sua questão.
No mundo real, existem algumas formas de realizar validações:
Eu, particularmente, gosto muito da segunda opção, apesar dela ter desvantagens. Eu gosto dela pois mantém as regras onde deveriam estar: No domínio da aplicação. Minha sugestão é: Teste várias formas diferentes, pense nos prós e contras de cada abordagem (toda abordagem tem prós e contras) e veja qual satisfaz sua necessidade de forma mais interessante.
1- Se entendi bem, acho que é assim que estou usando. O controller recebe os dados do POST e recheia a entidade com os dados.
Logo após chamo a classe de validação e passo a instância como parâmetro.
Essa classe de validação retorno true ou false para o controller. Mais ou menos assim:
...
$nome = $_POST['nome'];
$usuario = new Usuario($nome);
$validado = new ValidacaoUsuario($usuario);
if ($validado) {
// segue a lógica...
}
...
2- Não sei entendi bem. Até a parte da Entidade fazer a validação, blz. Só não entendi em caso de falha, como o Controller irá tratar isso. Vou ver se faço um teste aqui com exceções.
3- Esse eu até tinha feito, mas o controller ficou muito grande :) Então achei melhor chegar até a camada de domínio para instanciar a entidade e depois passar para uma classe de validação (item 1).
2 - Não sei entendi bem. Até a parte da Entidade fazer a validação, blz. Só não entendi em caso de falha, como o Controller irá tratar isso. Vou ver se faço um teste aqui com exceções.
O controller trataria a exceção lançada e retornaria a resposta de erro pro usuário de forma amigável.
boa! Obrigado!