Formule alguma coisa : Criando formulários em Zend Framework parte 2 :: Submetendo dados

Após criar o formulário dado na parte 1 de nosso tutorial, agora vamos submeter os dados recebidos pelo formulário.

No arquivo de formulario, setamos a ação como do form para 'minhaacao'.

class Form_Meuformulario extends Zend_Form{

    public function init(){

        // Ação para a página de envio do form.
        $this->setAction('.../minhaacao');

        // Método de envio do form.
        $this->setMethod('post');
        
        // Uma caixa de texto.
        $this->addElement('text', 'nomedoform',
                          array('label' => 'Label do form')
                         );

        // Botão de submissão.
        $this->addElement('submit', 'submit', 
         array('label'    => 'Enviar')
  );

   }

}

Editemos o arquivo de controller com a acao 'minhaacao' e acrescentamos a linha que irá receber os dados do formulario

class MeucontrollerController extends Zend_Controller_Action{

...

      public function minhaacaoAction(){

             // Cria o objeto de formulario.
             $form = new Form_Meuform();
 
             // Envia para o view o formulario.
             $this->view->formulario = $form;

             // Pega os dados enviados via POST.
             $data = $this->_request->getPost();

      }

...

}

Você pode mandar os dados para o view atraves da linha

...
$this->view->dados = $data;
    ...

e pra visualizar na views é só mandar imprimir com a linha

...
<?php print $this->dados; ?>
    ...

O próximo passo é a autenticação dos dados enviados. Para isso acrescentamos as linhas

class MeucontrollerController extends Zend_Controller_Action{
    
    ...

    public function minhaacaoAction(){

             // Cria o objeto de formulario.
             $form = new Form_Meuform();
 
             // Envia para o view o formulario.
             $this->view->formulario = $form;

             // Verifica se foram enviados dados via post.
             if( $this->_request->isPost() ){
             
                // Pega os dados enviados via POST.
                $data = $this->_request->getPost();

                // Caso os dados sejam válidos.
                if( $form->isValid($data) ){
                      <codigo surpresa>
                }

             }
             else{
                // Imprime na view o formulario por default 
                // assim que entra na página do formulário.
                $this->view->formulario = $form;
             }

      }

...

}

Aqui acrescentamos uma condição para verificar se foram enviados dados via POST. Se foram, então os dados são armazenados em '$data', assim, é verificado com 'isValid($data)' se os dados são validos de acordo com as regras de validação estipuladas pelo formulário que fizemos.
Agora, pra completar essa parte, queremos que, no caso de os dados não forem válidos, retornar ao formulário pra corrigir esses dados. Para não ter que fazer o usuário repetir tudo de novo, repopulamos o formulários com esses mesmos dados.
Para isso, acrescentamos mais umas linhas na ação acima:

class MeucontrollerController extends Zend_Controller_Action{
...

    public function minhaacaoAction(){

        // Cria o objeto de formulario.
        $form = new Form_Meuform();
 
        // Envia para o view o formulario.
        $this->view->formulario = $form;

        // Verifica se foram enviados dados via post.
        if( $this->_request->isPost() ){
             
            // Pega os dados enviados via POST.
            $data = $this->_request->getPost();

            // Caso os dados sejam válidos.
            if( $form->isValid($data) ){
                <codigo surpresa>
            }
            // Caso os dados não sejam válidos.
            else{
                // Se os dados não forem válidos, é reimpresso o
                // formulário com os dados repopulados para serem
                // corrigidos.
                $form->populate($data);
                $this->view->formulario = $form;
            }

        }
        else{
                // Imprime na view o formulario por default 
                // assim que entra na página do formulário.
                $this->view->formulario = $form;
        }

    }

...

}

E assim, nosso formulario esta praticamente completo. Só não está ainda por que, onde está escrito '<codigo surpresa>' podemos colocar dois tipos de códigos dependendo de nossos objetivos:

1 - código para inserir os dados no banco de dados
2 - código para autenticação de um formulário de login

Ou seja, o formulário feito até agora é geral o bastante pra usarmos tanto pra um formulario qualquer quanto para um formulario para fazer login no sistema.

Por isso teremos a terceira parte do formulário em Zend - salvar os dados do formulário no banco de dados, e num outro tutorial iremos apreveitar o que aprendemos até aqui pra criar um sistema de login.

Agora estamos prontos para a terceira parte de nossa série:

Formule alguma coisa : Criando formulários em Zend Framework parte 3 :: Salvando dados enviados dos formulários



Referência: http://framework.zend.com/manual/en/zend.form.html


Comentários