Requisitos do artigos:
– Ter o CakePHP 3 instalado ( Artigo de como instalar o Cakephp 3.x)
O que aprenderemos:
- Como trabalhar com formulários que não necessitam de um Model.
- Criar uma página de contato.
Formulários
Na maioria das vezes, trabalhamos com formulários relacionados a um Model para persistir dados. Outras vezes precisamos validar os dados de um formulário onde não há persistência, como é no caso de um Formulário de Contato. Para tal tarefa, o CakePHP 3.x nos disponibiliza o que chamamos de Modelless Forms.
Para começar, precisamos criar uma pasta chamada ‘Forms’ dentro do diretório ‘appsrc’. Para exemplificar vamos assumir que iremos criar um formulário de contato básico com nome, email e mensagem.
Na pasta Forms, crie um arquivo chamado ‘ContactForm.php’ com o seguinte conteúdo:
Linha 1:4 — Declaramos o namespace e importamos classes que iremos utilizar.
Linha 5 — Declaração da classe, obrigatório o sufixo Form tanto na declaração da classe como no nome do arquivo, Modelless Forms devem obrigatoriamente estender da classe Form.
Linha 12:17 — Método ‘_buildSchema‘, recebe como parâmetro um objeto do tipo Schema. É usado para definir o esquema de dados que será utilizado pelo FormHelper para criar o formulário html. É possível definir o tipo do campo, tamanho do campo e precisão. Este método deve retornar o próprio objeto Schema.
Linha 23:32 — Método ‘_buildValidator‘, recebe como parâmetro um objeto do tipo Validator. É usado para definir o esquema de validação do formulário quando processado. É possível definir várias regras de validação para mesmo campo. Este método deve retornar o próprio objeto Validator. Veja mais regras e opções em: https://book.cakephp.org/3.0/en/core-libraries/validation.html. Em breve irei publicar um artigo sobre Validação de dados.
Linha 38:~ — Método ‘_execute‘, recebe como parâmetro um array contendo os dados da requisição ou no caso os dados do formulário que o usuário preencheu. O retorno deste método é de acordo com a implementação.
Processando o Formulário
Uma vez definida a classe do formulário, temos agora de processa-lo, para isto podemos utilizar um Controller. Na pasta ‘appsrcController’ crie um arquivo chamado ‘ContactController.php’ com o seguinte conteúdo.
Linha 13 — Verificamos se a requisição é do tipo ‘POST’.
Linha 14 — Caso seja, tentamos processar o formulário executando o método ‘execute()’ que recebe como parâmetro os dados da requisição que estará disponível no método ‘_execute’ do Form. Ao executar o método ‘execute’, automaticamente o formulário irá tentar validar os dados de acordo com sua implementação do método ‘_buildValidator’, se a validação passar, só então o método ‘_execute’ é chamado.
Linha 20 — Envia o objeto do formulário à view para ser utilizado no FormHelper.
Capturando erros de validação
Para capturar os erros de validação, utilize o método ‘errors()’ do objeto do formulário, veja abaixo um exemplo:
O método ‘errors’ retorna um array com a listagem de campos que não estão válidos, sendo os índices os nomes dos campos e os valores as mensagens de erro.
Exibição do Formulário
Para que o formulário seja exibido para usuário, crie uma view no diretório ‘appsrcViewTemplateContact’ com o nome ‘index.ctp’ e o seguinte conteúdo:
Por enquanto é só galera, em breve irei publicar como enviar os dados do formulário para um e-mail.
Qualquer dúvida, estou a disposição para ajudar.
Abraços!