Validation in the view is only used to avoid an "invalid" request, but this validation should not be trusted since the user can change it.
The most reliable validation is done on the server, this question of doing it in the controller or model is very conceptual, goes from your organization/ methodology, in both cases will work.
By using Zend Framework 2, I created the custom of creating an object for form (which turns the form into html) and another object for filtering and validating the data, both objects are part of the Model layer, as they contain business rules, but are handled in the controller, I consider it a well organized way and recommend it.
Follow an example:
class ProdutosController
{
/**
* Este action insere produto no banco de dados
*/
public function addAction()
{
$requisicao = $this->getRequisicao(); // requisição
$dados = $requisicao->getPost(); // dados enviados pelo form
$entidade = $this->getEntidade; // entidade, mapeamento da tabela produtos do banco de dados
$model = $this->getModel(); // model, classe que conversa diretamente com o BD
$form = $this->getForm(); // Objeto form para montar formulário HTML
// Se requisição for post, é porque usuário enviou o formulário
// caso contrário é GET então ele está visualizando o form de inserção
if ($requisicao->isPost()) {
// Injeta objeto que filtra e valida os dados
$form->setInputFilter($entidade->getInputFilter());
// Joga os dados enviados pelo form HTML pra dentro do objeto form
// assim será possível valida-los e outras ações que são feitas pelo objeto form
$form->setDados($dados);
// Verifica se o form foi validado com sucesso (executa validações do inputFilter)
if ($form->isValid()) {
// hidrata/popula a entidade com os dados que estavam no form
$entidade->hidratar($form->getDados());
// insere a entidade no banco de dados
$model->insert($entidade);
// Após inserção, redireciona para listagem
$this->redirect()->toRoute('produtos/lista');
}
}
// Caso requisição não seja POST ou caso validação do form tenha falhado
// então carregar a view
// caso validação do form tenha falhado, vai enviar as msgs de erro para a view tb
// retornar um array é o jeito do Zend de enviar variáveis para a view
return array(
'variavel1' => 'valor1',
'variavel2' => 'valor2',
'variavel3' => 'valor3',
'form' => $form,
);
}
}
You have to use object orientation or I can recover this way?
if(isset($_POST['btnExemple'])) {...}
It’s just a basic question for a beginner like me :p– Guilherme SpinXO
@Guilhermegouveiaalves not understood, MVC most is done in Object Orientation you use some framework?
– TutiJapa Wada
I am not using Framework, me and a friend who is beginner we are also making a simple application for studies...
– Guilherme SpinXO