Ir ao conteúdo
  • Cadastre-se

Validações no MVC(PHP)


eric123

Posts recomendados

Fala ai pessoal!

Estou utilizando o MVC em PHP em um projeto que estou desenvolvendo. Estive vendo algumas coisas e me veio algumas dúvidas e não sei se este meu conceito interfere muito no conceito do MVC...

No MVC, quando envio algo via $POST, sempre me peguei achando que eu deveria enviar estes dados a um controller para ele fazer as "validações" e, caso tenha algo errado ele redirecionaria o usuario a pagina anterior dizendo os erros, ficaria assim VIEW -> CONTROLLER -> VIEW. porém desta forma perco os dados do formulario pois eles ficaram no Controller, e ao redirecionar para a pagina inicial eu ja nao tenho mais estes dados e as vezes a unica forma de passar estes dados é através de um GET ou SESSION(que nao é muito correto).

A minha dúvida é saber se eu inserir estas validações na minha VIEW, ou seja, em SELF eu perco o conceito do MVC, pois assim nao perco nenhuma informação para que eu possa mostrar ao meu usuario o que está errado e nao perco os dados enviar anteriormente pelo form...?

Link para o comentário
Compartilhar em outros sites

Sim, entendo. Ja utilizei e utilizo bastante jQuery, mas você se diz isto pois o jQuery faz validação sem precisar atualizar a pagina, correto? Pensando bem seria a única forma de validar antes de enviar os dados para o controller, uma vez que este dados são enviados e utilizados para consulta a um banco ou/e criar um objeto para ser utilizado!

Link para o comentário
Compartilhar em outros sites

  • Moderador

em partes está correto. não é que o jQuery faça a validação, mas sim uma função do jQuery para requisições assíncronas por exemplo  $.ajax()

 

Sim, eu vejo a unica solução para validações de dados antes de enviar ao controller.

Outra coisa que tem que levar em consideração é o uso do JSON( pronuncia: "djeizón"), assim você cria um array de objetos. 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Não entendi muito bem a dúvida inicial pois me perdi na parte do 'porém desta forma perco os dados do formulario pois eles ficaram no Controller'. Isso não é bem verdade.. ao carregar a view a mesma deve ter a capacidade de acessar os dados do $_POST desde que o Controller permita. Ou seja, é função do controller passar essas informações para qualquer view que seja.

O "ideal" é fazer duas validações:

(1) client-side (javascript), para facilitar e principalmente poupar requisições (se você já sabe que está errado não precisa enviar uma requisição ao servidor para verificar algo que já poderia ter sido verificado client-side)
(2) server-side (php, por ex), pois os dados que são recebidos nunca são confiáveis - muito menos sua origem.

 

Acredito que se tratando de MVC, a melhor forma de enviar formulários e suas respectivas validações sejam através de ajax, e aí a comunicação pode mesmo ser feita com o JSON, mencionado pelo amigo Dif.

@dif (Off): não seria melhor recomendar as pessoas a falarem "jeizón", uma vez que com o "d" a mente da pessoa vai ler "dj zón"? :P

Link para o comentário
Compartilhar em outros sites

Ok, mas o server-side eu num teria já que enviar pro controller? Eu enviando para o Controller e ele me dizendo que houve erro(usuario nao existe), como ele retornaria este ou qualquer outro dado para a minha view anterior de forma segura?(Ja que os dados de $POST ficaram no controller)

Link para o comentário
Compartilhar em outros sites

  • Moderador

Veja esse exemplo simples de requisição com ajax e jquery:

$(document).ready(function(e){   //mesmo que return false   e.preventDefault();   var dados = $("#form").serialize();   $.ajax({      url: 'app/controller/controller.php',      datatype: 'json',      data: dados,      success: function(callback){                   alert(callback);               },      error:  function(callback){                   alert(callback);               }         });});

vamos lá:

 

Na linha 4,  foi usada uma função chamada serialize(), para evitar que você tenha que digitar todos os campos do seu formulário

Na linha 6, define o caminho na qual você vai enviar os dados para validação em server-side

Na linha 7, define o tipo de dados,  no caso JSON

Na linha 8, os dados do formulário serão passados

Na linha 9,  função de retorno, caso seja bem sucedido.

Na linha 12, função de retorno, caso seja mal sucedido.

 

Linhas 10 e 13, foi usada um alert() para mostrar o retorno.  você pode trocar por um $("sua div").html(callback) para mostrar o retorno nesta div.

 

No fim, você fez uma requisição assíncrona, sem sair da página, sem perder os dados que estão no formulário.

 

Lembrando que, o ideal é fazer o que o @Mog.Lucas disse. Fazer uma validação no client-side, para poupar requisições.

Link para o comentário
Compartilhar em outros sites

Sobre o client-side eu entendi.

Agora entendi um pouco sobre o server-side. Bom, percebi que dependendo do valor boolean que o controller me retornar eu consigo dizer que há erro, porém eu consigo retornar uma string indicando o que é o erro??

tipo assim "O usuário nao foi encontrado".

Link para o comentário
Compartilhar em outros sites

  • Moderador

sim, como você passa para o controller os dados,  você faz a busca no banco e dados.. e retorna a mensagem de erro.

Note que, com a função ajax que passei ali no post #9 na linha 10, a mensagem de erro é apresentada em um alert.  aquele "callback"  seria nada mais do que a mensagem de erro da verificação no controller.  

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...