Pergunta

Ao codificar um aplicativo MVC tradicional, qual é a melhor prática para codificar validações de formulários no lado do servidor?O código pertence ao controlador ou à camada do modelo?E porque?

Foi útil?

Solução

Da Wikipédia:

Controlador de visualização de modelo (MVC) é um padrão de arquitetura usado em engenharia de software.O uso bem-sucedido do padrão isola a lógica de negócios das considerações da interface do usuário, resultando em um aplicativo onde é mais fácil modificar a aparência visual do aplicativo ou as regras de negócios subjacentes sem afetar a outra.No MVC, o modelo representa as informações (os dados) da aplicação e as regras de negócio utilizadas para manipular os dados;a visualização corresponde a elementos da interface do usuário, como texto, itens de caixa de seleção e assim por diante;e o controlador gerencia detalhes que envolvem a comunicação ao modelo de ações do usuário, como pressionamentos de teclas e movimentos do mouse.

Assim, modelo - contém a aplicação e as regras de negócio.

Outras dicas

Concordo plenamente com Josh.No entanto, você pode criar uma espécie de camada de validação entre o Controlador e o Modelo para que a maioria das validações sintáticas possam ser realizadas nos dados antes que cheguem ao modelo.

Por exemplo,

A camada de validação validaria o formato da data, formato do valor, campos obrigatórios, etc...

Portanto, esse modelo se concentraria puramente nas validações de negócios, como o valor x deveria ser maior que o valor y.

Minha experiência com MVC até agora consiste inteiramente em trilhos.

Rails faz sua validação 100% no modelo.
Na maior parte, isso funciona muito bem.Eu diria que 9 em cada 10 vezes é tudo que você precisa.

No entanto, existem algumas áreas em que o que você está enviando de um formulário não corresponde corretamente ao seu modelo.Pode haver alguma filtragem/reorganização adicional ou assim por diante.

A melhor maneira de resolver essas situações que encontrei é criar objetos de modelo falso, que basicamente agem como objetos de modelo, mas mapeiam 1 para 1 com os dados do formulário.Na verdade, esses objetos de modelo falso não salvam nada, eles são apenas um depósito para os dados com validações anexadas.
Um exemplo de tal coisa (em Rails) é Formulário Ativo

Depois que os dados chegam a eles (e são válidos), geralmente é uma etapa bastante simples transferi-los diretamente para seus modelos reais.

A verificação de sintaxe básica deve estar no controle, pois traduz a entrada do usuário para o modelo.O modelo precisa fazer a validação real dos dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top