Documentation
Book
API
Videos
Reporting Security Issues
Privacy Policy
Logos & Trademarks
Business Solutions
Swag
Road Trip
Team
Community
Community
Get Involved
Issues (Github)
Bakery
Featured Resources
Training
Meetups
My CakePHP
CakeFest
Newsletter
Linkedin
YouTube
Facebook
Twitter
Mastodon
Help & Support
Forum
Stack Overflow
Slack
Paid Support
B
CakePHP 5.x Chiffon
Book
A
Language:
en
pt
es
ja
fr
Version:
5.x
5.x Book
4.x Book
3.x Book
2.x Book
1.3 Book
1.2 Book
1.1 Book
Nav
Table of Contents
×
Improve This Doc
Conteúdo
¶
Prefácio
CakePHP num piscar de olhos
Convenções Sobre Configuração
A Camada Model
A Camada View
A Camada Controller
Ciclo de Requisições do CakePHP
Apenas o Começo
Leitura Adicional
Onde Conseguir Ajuda
O website oficial do CakePHP
O Cookbook
A Bakery
A API
Os Testes de Caso
O canal de IRC
Stackoverflow
Onde conseguir ajuda em sua língua
Francês
Convenções do CakePHP
Convenções para Controllers
Considerações de URL para nomes de Controller
Convenções para nomes de Classes e seus nomes de arquivos
Convenções para Models e Databases
Convenções para Views
Estrutura de pastas do CakePHP
O diretório src
Guia de Início Rápido
Tutorial - Criando um Bookmarker - Parte 1
Instalação do CakePHP
Verificando nossa instalação
Criando o banco de dados
Configurando o banco de dados
Gerando o código base
Adicionando criptografia de senha
Recuperando bookmarks com uma tag específica
Criando o método localizador
Criando a view
Tutorial - Criando um Bookmarker - Parte 2
Adicionando login
Adicionando logout
Ativando inscrições
Restringindo acesso
Corrigindo a view de listagem e formulários
View de listagem
Melhorando a experiência com as tags
Adicionando um campo computado
Atualizando as views
Persistindo a string tag
Terminando
4.0 Migration Guide
Tutoriais & Exemplos
Tutorial - Gerenciador de Conteúdo
Instalando CakePHP
Verificando sua Instalação
Tutorial - Gerenciador de Conteúdo - Criando o Banco de Dados
Configuração do Banco de Dados
Criando nosso Primeiro Modelo
CMS Tutorial - Creating the Articles Controller
CMS Tutorial - Authentication
Tutorial - Criando um Bookmarker - Parte 1
Instalação do CakePHP
Verificando nossa instalação
Criando o banco de dados
Configurando o banco de dados
Gerando o código base
Adicionando criptografia de senha
Recuperando bookmarks com uma tag específica
Criando o método localizador
Criando a view
Tutorial - Criando um Bookmarker - Parte 2
Adicionando login
Adicionando logout
Ativando inscrições
Restringindo acesso
Corrigindo a view de listagem e formulários
View de listagem
Melhorando a experiência com as tags
Adicionando um campo computado
Atualizando as views
Persistindo a string tag
Terminando
Tutorial - Criando um Blog - Parte 1
Instalação do CakePHP
Permissões dos diretórios tmp e logs
Criando o banco de dados do Blog
Configurando o banco de dados do Blog
Configurações opcionais
Observação sobre o mod_rewrite
Tutorial - Criando um Blog - Parte 2
Criando o model
Criando o controller
Criando as views
Adicionando artigos
Validando artigos
Editando artigos
Deletando artigos
Rotas
Conclusão
Leitura complementar
Tutorial - Criando um Blog - Parte 3
Criar uma arvore de Categoria
Migração de Plugin
Modificando as Tabelas
Gerar código esqueleto por categorias
Anexar árvore de compartamento para CategoriesTable
Reordenar categorias com TreeBahavior
Modificando o ArticlesController
Modificando os artigos Templates
Tutorial - Criando um Blog - Autenticação e Autorização
Criando todo o código relacionado ao Usuário
Autenticação (Login e Logout)
Autorização (quem tem permissão para acessar o que)
Sugerimos as seguintes leituras
Contribuindo
Documentação
Traduções
Nova tradução linguística
Lembrete para administradores de documentação
Dicas para tradutores
Guia de formatação para documentação
Comprimento da linha
Títulos e Seções
Parágrafos
Marcação em linha
Listas
Links
Links externos
Links para outras páginas
Links de referências cruzados
Prevenindo alertas do Sphinx
Descrevendo classes e seus conteúdos
Descrevendo classes e construtores
Prevenindo alertas do Sphinx
Referenciamento cruzado
Código-fonte
Notas e alertas
Exemplos
Tickets
Reportando bugs
Reportando problemas de segurança
Código
Configuração inicial
Trabalhando em um patch
Enviando um pull request
Escolhendo onde suas alterações serão incorporadas
Padrões de codificação
Adicionando novos recursos
Indentação
Comprimento da linha
Estruturas de controle
Operadores ternários
Arquivos de template
Comparação
Chamadas de função
Definição de método
Declaração de tipo
Funções anônimas (Closures)
Encadeamento de métodos
Comentando código
Tipos de variáveis
Incluindo arquivos
Tags do PHP
Short Echo
Convenção de nomenclatura
Funções
Classes
Variáveis
Visibilidade
Endereços para exemplos
Arquivos
Moldagem de tipos
Constante
Cuidados usando empty()/isset()
Guia de retrocompatibilidade
Guia de migração
Usando o CakePHP
Interfaces
Classes
Trabalhando no CakePHP
Começando
Instalação
Requisitos
Instalando o CakePHP
Mantendo sincronização com as últimas alterações no CakePHP
Permissões
Servidor de Desenvolvimento
Produção
Aquecendo
Reescrita de URL
Apache
nginx
IIS7 (Windows hosts)
Não posso utilizar Reescrita de URL
Configuração
Configurando sua Aplicação
Carregando Arquivos de Configurações Adicionais
Configuração Geral
Configuração do banco de dados
Configuração do Cache
Configuração de manipulação de erro e exceção
Configuração de log
Configuração de e-mail
Configuração de sessão
Configuração de roteamento
Caminhos adicionais de classe
Plugin, Modelos de Visualização e Caminhos Locais
Configuração de Inflexão
Configurar classe
Escrevendo dados de configuração
Leitura de dados de configuração
Verificar se os dados de configuração estão definidos
Excluindo Dados de Configuração
Leitura e exclusão de dados de configuração
Lendo e escreveendo arquivos de configuração
Carregando arquivos de configurações
Criando ou modificando arquivos de configuração
Armazenando Configuração do Tempo de Execução
Restaurando a Configuração do Tempo de Execução
Criando seus próprios mecanismos de configuração
Motores de Configuração Integrados
Arquivos de configuração do PHP
Arquivos de configuração Ini
Arquivos de configuração do Json
Bootstrapping CakePHP
Application::bootstrap()
Variáveis de Ambiente
Desabilitando tabelas genéricas
Aplicação
Adicionando a nova pilha HTTP a um aplicativo existente
Roteamento
Tour Rápido
Conectando Rotas
Elementos de Rota
Configurando opções de rota
Passando parâmetros para ação
Usando Rotas Nomeadas
Prefix Routing
Criando links para rotas de prefixo
Roteamento de Plugins
Criando links para rotas de plugins
Roteamento otimizado para SEO
Correspondendo a métodos HTTP específicos
Nomes de host específicos correspondentes
Extensões de arquivo de roteamento
Conectando Middleware com Escopo
Agrupando Middlewares
Criando rotas RESTful
Criando rotas de recursos aninhados
Limitando as rotas criadas
Alterando as ações usadas no controlador
Mapeando rotas de recursos adicionais
Classes de rota personalizadas para rotas de recursos
Inflexão de URL para rotas de recursos
Alterando o elemento de caminho
Passando Argumentos
Gerando URLs
Rotas de redirecionamento
Classes de rota personalizadas
Classe de rota padrão
Método de fallbacks
Criando parâmetros de URL persistentes
Manipulando parâmetros nomeados em URLs
Objetos de Requisição e Resposta
Requisição
Parâmetros de Requsição
Parâmetros em URL
Dados do Corpo da Requisição
Dados PUT, PATCH ou DELETE
Variáveis de Ambiente ($_SERVER e $_ENV)
Dados XML ou JSON
Informações de Caminho
Verificando as Condições da Solicitação
Dados da Sessão
Host e Nome de Domínio
Lendo o método HTTP
Restringindo Qual Método HTTP Uma Ação Aceita
Lendo Cabeçalhos HTTP
Confiando em Cabeçalhos de Proxy
Verificando Aceitar Cabeçalhos
Lendo Cookies
Arquivos Enviados
Manipulando URIs
Resposta
Lidando com Tipos de Conteúdo
Enviando Arquivos
Enviando uma String como Arquivo
Definindo Cabeçalhos
Definindo o Corpo
Definindo o Conjunto de Caracteres
Interagindo com o Cache do Navegador
Ajuste Fino de Cache HTTP
O cabeçalho para Controle de Cache
O Cabeçalho de Expiração
O Cabeçalho Etag
O Último Cabeçalho Modificado
O Cabeçalho Vary
Enviando Respostas Não Modificadas
Configurando Cookies
Definindo Cabeçalho de Solicitação de Origem Cruzada (CORS)
Erros Comuns com Respostas Imutáveis
Cookie Collections
Criando Cookies
Lendo Cookies
Middleware
Middleware em CakePHP
Usando Middleware
Adicionando Middleware a partir de Plugins
Criando um Middleware
Roteamento de Middleware
Middleware de Cabeçalho de Segurança
Middleware do Cabeçalho da Política de Segurança de Conteúdo
Middleware de Cookie Criptografado
Falsificação de Solicitação entre Sites (CSRF) Middleware
Integração com FormHelper
Solicitações de Proteção CSRF e AJAX
Body Parser Middleware
Controllers (Controladores)
O App Controller
Fluxo de requisições
Métodos (actions) de controllers
Interagindo com views
Definindo variáveis para a view
Renderizando uma view
Renderizando uma view específica
Redirecionando para outras páginas
Redirecionando para outra action no mesmo Controller
Carregando models adicionais
Paginando um model
Configurando components para carregar
Configurando helpers para carregar
Ciclo de vida de callbacks em uma requisição
Mais sobre controllers
O Pages Controller
Componentes
AuthComponent
Sugestão de Leitura Antes de Continuar
Autenticação
Escolhendo um Tipo de Autenticação
Configurando Manipuladores de Autenticação
Personalizando a Consulta de Localização
Identificando Usuários e Efetuando Login
Redirecionando Usuários após o Login
Criando Sistemas de Autenticação sem Estado
Usando Autenticação Básica
Criando Chaves de API para Autenticação Básica
Usando Autenticação Digest
Hashing de Senhas para Autenticação Digest
Criando Objetos de Autenticação Personalizados
Usando Objetos de Autenticação Personalizados
Manipulando Solicitações Não Autenticadas
Exibindo Mensagens Flash Relacionadas à Autenticação
Hashing de Senhas
Criando Classes Personalizadas de Hasher de Senha
Alterando Algoritmos de Hash
Logon Manual de Usuários
Acessando o Usuário Conectado
Logout de Usuários
Decidindo Quando Executar a Autenticação
Autorização
Configurando Manipuladores de Autorização
Criando Objetos de Autorização Personalizados
Usando Objetos de Autorização Personalizados
Usando Sem Autorização
Tornando Métodos Públicos
Fazendo Métodos Exigir Autorização
Usando ControllerAuthorize
Opções de configuração
Testando Ações Protegidas por AuthComponent
Flash
Configurando Mensagens em Flash
HTML Em Mensagens Flash
Security (Segurança)
Como Lidar com Retornos de Chamada Blackhole
Restringir Ações ao SSL
Restringindo a Comunicação entre Controladores
Prevenção de Adulteração de Formulários
Uso
Proteção CSRF
Desabilitando o Componente de Segurança para Ações Específicas
Pagination
Usando Controller::paginate()
Usando o Paginator Diretamente
Paginando Múltiplas Queries
Paginando o Mesmo Modelo Várias Vezes
Controlar Quais Campos Usados para Ordenamento
Limitar o Número Máximo de Linhas por Página
Juntando Associações Adicionais
Solicitações de Página Fora do Intervalo
Paginação na View
Request Handler (Tratamento de Requisições)
Obtenção de Informações de Solicitação
Decodificação Automática de Dados de Solicitação
VerificandoPreferências de Tipo de Conteúdo
Respondendo a Solicitações
Aproveitando a Validação de Cache HTTP
Usando ViewClasses Customizadas
Configurando Componentes
Alias em Componentes
Carregando Componentes em Tempo Real
Usando Componentes
Criando um Componente
Incluindo seu Componente em seus Controladores
Usando Outros Componentes em seu Componente
Acessando o Controlador de um Componente
Callback de Componentes
Views (Visualização)
A App
View
View Templates
Echos
Alternativos
Estruturas de controle alternativas
Variáveis da
View
Definindo Variáveis da View
Estendendo
Views
Usando View Blocks
Exibindo
Blocks
Usando
Blocks
para arquivos de script e css
Layouts
Usando Layouts de Plugins
Elements
Passando variáveis para um
Element
Fazendo Cache de
Elements
Requisitando
Elements
de um plugin
Routing prefix
e
Elements
Fazendo Cache de Seções da sua
View
Eventos da
View
Lista de Eventos
Criando suas próprias Classes View
Mais sobre
Views
View Cells (Células de Visualização)
Quando usar
Cells
Implementando a
Cell
Carregando
Cells
Passando argumento para a
Cell
Renderizando uma Cell
Renderizando template alternativos
Caching Cell Output
Temas
Assets
do Tema
Views JSON & XML
Helpers (Facilitadores)
Breadcrumbs
Flash
Form
Criando Inputs para Dados Associados
Html
Number
Paginator
PaginatorHelper Templates
Text
Time
Url
Classe
Helper
Models (Modelos)
Exemplo rápido
Mais informação
O básico sobre banco de dados
Tour Rápido
Bancos de Dados Suportados
Executando Instruções de Consulta
Executando Instruções de Inserção
Executando Instruções de Atualização
Executando Instruções de Exclusão
Configuração
Gerenciando Conexões
Acessando Conexões
Criando Conexões em Tempo de Execução
Tipos de Dados
Tipo DateTime
Adicionando Tipos Personalizados
Mapeando Tipos de Dados Personalizados para Expressões SQL
Habilitando Objetos DateTime Imutáveis
Classes de Conexão
Executando Consultas
Usando Transações
Interagindo com Instruções
Preparando um Instrução
Binding Values
Executando & Obtendo Linhas
Obtendo Contagens de Linha
Verificando Códigos de Erro
Log de Consultas
Identifier Quoting
Metadata Caching
Criando Banco de Dados
Construtor de Queries
O Objeto Query
Selecionando Linhas de uma Tabela
Selecionando uma Única Linha de uma Tabela
Obtendo uma Lista de Valores de uma Coluna
As Consultas são Objetos de Coleção
As Consultas são Avaliadas Preguiçosamente
Selecionando Dados
Selecionando Campos Específicos
Usando Funções SQL
Argumentos de Função
Funções Customizadas
Agregadores - Group e Having
Declarações de Caso
Obtendo Matrizes em Vez de Entidades
Adicionando Campos Calculados
Condições Avançadas
Usando Identificadores em Expressões
Criando Cláusulas IN Automaticamente
Criação Automática de IS NULL
Criação Automática de IS NOT NULL
Expressões Nativas
Obtendo Resultados
Retornando a Contagem Total de Registros
Cache de Resultados Carregados
Carregando Associações
Passing Conditions to Contain
Sorting Contained Associations
Filtrando por Dados Aassociados
Using innerJoinWith
Using notMatching
Using leftJoinWith
Adicionando Junções
Inserindo Dados
Atualizando Dados
Apagando Dados
Prevenção de SQL Injection
Valores de Ligação
Mais Consultas Complexas
Unions
Subconsultas
Adicionando Instruções de Bloqueio
Executando Consultas Complexas
Objetos de tabela
Lifecycle Callbacks
Behaviors
Configurando Conexões
Entidades
Criando Classes de Entidade
Criando Entidade
Acessando Dados de Entidade
Accessors & Mutators
Criando Propriedades Virtuais
Verificando se uma Entidade Foi Modificada
Erros de Validação
Atribuição em Massa
Evitando Proteção de Atribuição em Massa
Modificando os Campos Vigiados em Tempo de Execução
Ignorando Proteção de Campo
Verificando se uma Entidade foi Persistida
Lazy Loading Associations
Criando Código Re-utilizável com Traits
Convertendo para Arrays/JSON
Expondo Propriedades Virtuais
Ocultando Propriedades
Armazenando Tipos Complexos
Retornando dados e conjuntos de resultados
Depurando Queries e Resultados
Pegando uma entidade com a chave primária
Usando
'find()'
para carregar dados
Primeiro Resultado
Contando os resultados
Encontrando Chaves/Pares de Valores
Encontrando dados enfileirados
Personalizando Metódos de Consulta
Buscadores dinâmicos
Retornando Dados Associados
Eager Loading Associations
Passing Conditions to Contain
Sorting Contained Associations
Filtering by Associated Data Via Matching And Joins
Using innerJoinWith
Using notMatching
Using leftJoinWith
Changing Fetching Strategies
Fetching With The Subquery Strategy
Lazy Loading Associations
Working with Result Sets
Getting the First & Last Record From a ResultSet
Getting an Arbitrary Index From a ResultSet
Checking if a Query or ResultSet is Empty
Loading Additional Associations
Modifying Results with Map/Reduce
Stacking Multiple Operations
Removing All Stacked Map-reduce Operations
Validando dados
Validando dados antes de construir entidades
Aplicando regras da aplicação
Usando um Conjunto de Validação Diferente
Usando um Conjunto de Validação Diferente para Associações
Salvando Dados
Visão Geral Sobre Salvando Dados
Inserindo Dados
Atualizando Dados
Salvando com Associações
Associe Muitos para Muitos (N para N) registros
Salvando Dados da Tabela de Ligação
Remover Associação Muitos para Muitos (N para N) Registros
Convertendo Dados de Requisição em Entidades
Convertendo Dados de Associação BelongsToMany
Convertendo Dados de Associação HasMany
Convertendo Vários Registros
Alterando Campos Acessíveis
Mesclando Dados de Requisição em Entidades
Validação e patchEntity
Patching HasMany and BelongsToMany
Modificando Dados de Requisição Antes de Contruir Entidades
Validando Dados Antes de Construir Entidades
Evitando Ataques de Atribuição em Massa de Propriedade
Salvando Entidades
Salvando Associações
Salvando Associações BelongsTo
Salvando Associações HasOne
Salvando Associações HasMany
Salvando Associações BelongsToMany
Salvando Dados Adicionais na Tabela de Ligação
Salvando Tipos Complexos (Complex Types)
Strict Saving
Salvando Várias Entidades
Atualização em Massa
Excluindo Dados
Exclusão em Cascata
Exclusão em Massa
Exclusões Estrita
Associações - Conectando tabelas
Associação HasOne
Associações BelongsTo
Associações HasMany
Associações BelongsToMany
Usando a opção «através»
Condições de associação padrão
Carregando Associações
Behaviors (Comportamentos)
Usando Behaviors
Core Behaviors
CounterCache
Uso Básico
Uso Avançado
Timestamp
Uso Básico
Usando e Configurando o Behavior
Atualizando Timestamps em Entidades
Salvando Atualizações Sem Alterar o Timestamp
Translate
Um Tour Rápido
Inicializando a Tabela do Banco de Dados i18n
Anexando o Comportamento da Conversão às suas Tabelas
Usando uma Tabela de Traduções Separada
Lendo Conteúdo Traduzido
Recuperar Todas as Traduções para uma Entidade
Limitando as Traduções a serem Recuperadas
Impedindo a Recuperação de Traduções Vazias
Recuperando Todas as Traduções para Associações
Recuperando um Idioma Sem Usar I18n::SetLocale
Consultando Campos Traduzidos
Salvando em Outro Idioma
Salvando Várias Traduções
Validando Entidades Traduzidas
Árvore
Requisitos
Início rápido
Configuração
Nível do nó (Profundidade)
Escopo e Multi Árvores
Recuperando com campo de classificação personalizada
Salvando Dados Hierárquicos
Apagando nós
Criando Behavior
Definindo Métodos de Mixin
Limitando ou Renomeando Métodos de Mixin Expostos
Defining Event Listeners
Definindo Finders
Limitando ou Renomeando Métodos Finder Expostos
Transforming Request Data into Entity Properties
Removendo Behaviors Carregados
Acessando Behaviors Carregados
Re-configurando Behaviors Carregados
Schema
Objetos Schema\TableSchema
Acessando Dados de Coluna
Índices e Restrições
Lendo Índices e Restrições
Adicionando Opções de Tabela
Convertendo TableSchema em SQL
Schema Collections
ORM Cache Shell
Using CakePHP
AuthComponent
Sugestão de Leitura Antes de Continuar
Autenticação
Escolhendo um Tipo de Autenticação
Configurando Manipuladores de Autenticação
Personalizando a Consulta de Localização
Identificando Usuários e Efetuando Login
Redirecionando Usuários após o Login
Criando Sistemas de Autenticação sem Estado
Usando Autenticação Básica
Criando Chaves de API para Autenticação Básica
Usando Autenticação Digest
Hashing de Senhas para Autenticação Digest
Criando Objetos de Autenticação Personalizados
Usando Objetos de Autenticação Personalizados
Manipulando Solicitações Não Autenticadas
Exibindo Mensagens Flash Relacionadas à Autenticação
Hashing de Senhas
Criando Classes Personalizadas de Hasher de Senha
Alterando Algoritmos de Hash
Logon Manual de Usuários
Acessando o Usuário Conectado
Logout de Usuários
Decidindo Quando Executar a Autenticação
Autorização
Configurando Manipuladores de Autorização
Criando Objetos de Autorização Personalizados
Usando Objetos de Autorização Personalizados
Usando Sem Autorização
Tornando Métodos Públicos
Fazendo Métodos Exigir Autorização
Usando ControllerAuthorize
Opções de configuração
Testando Ações Protegidas por AuthComponent
Caching
Configurando Mecanismos de Cache
Opções do Mecanismo
Opções do FileEngine
Opções RedisEngine
Opções do MemcacheEngine
Configurando Fallbacks de Cache
Remoção de Mecanismos de Cache Configurados
Gravando em um Cache
Escrevendo Várias Chaves de uma só Vez
Armazenamento em Cache de Leitura
Lendo de um Cache
Lendo Várias Chaves de uma só Vez
Exclusão de um Cache
Exclusão de Várias Chaves de uma só Vez
Limpando Dados em Cache
Usando Cache para Armazenar Contadores
Usando o Cache para Armazenar Resultados Comuns de Consulta
Usando Grupos
Ativar ou Desativar Globalmente o Cache
Criando um Mecanismo de Cache
Console e Shells
O Console do CakePHP
Criando uma Shell
Usando Models em suas shells
Tasks de Shell
Carregando Tasks em tempo-real com TaskRegistry
Invocando outras Shells a partir da sua Shell
Recenendo Input de usuários
Criando Arquivos
Saída de dados do Console
Console Output Levels
Estilizando a saída de dados
Desabilitando a colorização
Opções de configuração e Geração de ajuda
Configurando um interpretador de opção com a interface fluida
Adicionando argumentos
Validando argumentos
Adicionando opções
Validando opções
Usando opções boleanas
Adicionando subcomandos
Construir uma ConsoleOptionParser de uma matriz
Recebendo ajuda das Shells
Recebendo ajuda como XML
Roteamento em Shells / CLI
Métodos enganchados
Mais tópicos
Shell Helpers
Console Interativo (REPL)
Executando Shells como Cron Jobs
I18N Shell
Completion Shell
Plugin Shell
Routes Shell
Server Shell
Cache Shell
Depuração
Depuração Básica
Usando a Classe Debugger
Valores de saída
Criando Logs com Pilha de Execução
Gerando Pilhas de Execução
Pegando Trechos de Arquivos
Usando Logging para Depuração
Debug Kit
Implantação
Atualizar config/app.php
Checar a segurança
Definir a raiz do documento
Aprimorar a performance de sua aplicação
Email
Uso Básico
Escolha do Remetente
Configuração
Perfis de Configuração
Configurando Cabeçalhos
Envio de Emails com Templates
Enviando Anexos
Regras para Validação de Endereço mais Flexíveis
Enviando Mensagens Rapidamente
Enviando E-mails de CLI
Criação de Emails Reutilizáveis
Configurando os Transportes
Criação de Transportes Personalizados
Enviar Emails sem Usar o Mailer
Testando Emails
Métodos de Asserções
Erros & Exceções
Configurações de Erro & Exceções
Alterando o tratamento de exceções
Customizando Templates de Erro
Personalizar o layout da página de erro
Customize the ErrorController
Change the ExceptionRenderer
Changing the ErrorController Class
Creating your Own Error Handler
Changing Fatal Error Behavior
Creating your own Application Exceptions
Logging Exceptions
Built in Exceptions for CakePHP
HTTP Exceptions
Using HTTP Exceptions in your Controllers
Other Built In Exceptions
Sistema de Eventos
Exemplo de Uso dos Eventos
Acessando os Gerenciadores de Evento (Event Menagers)
Gerenciador de Eventos Global
Rastreando Eventos
Eventos do Core
Registrando Listeners
Registrando Listeners Anônimos
Interagindo com Listeners Existentes
Estabelecendo Prioridades
Obtendo Dados do Evento como Argumentos da Função
Disparando Eventos
Parando Eventos
Parando o Resultado de um Evento
Removento Callbacks e Ouvintes
Leitura Adicional
Internacionalização e Localização
Configurando Traduções
Arquivos de Idiomas
Extraindo arquivos .pot com I18n Shell
Definir a localidade padrão
Alterando o local em tempo de execução
Usando funções de tradução
Usando variáveis em mensagens de tradução
Plurais
Usando UTI para Seleção de Plural
Usando Gettext para Seleção de Plural
Criar seus próprios Tradutores
Logging
Logging Configuration
Formulários sem Models
Criando o Formulário
Processando Requisição de Dados
Definindo os Valores do Formulário
Pegando os Erros do Formulário
Invalidando Campos Individuais do Formulário no Controller
Criando o HTML com FormHelper
Pagination
Usando Controller::paginate()
Usando o Paginator Diretamente
Paginando Múltiplas Queries
Paginando o Mesmo Modelo Várias Vezes
Controlar Quais Campos Usados para Ordenamento
Limitar o Número Máximo de Linhas por Página
Juntando Associações Adicionais
Solicitações de Página Fora do Intervalo
Paginação na View
Plugins
Instalando um Plugin com Composer
Plugin Map File
Carregando um Plugin
Autoloading Plugin Classes
Configuração do Plugin
Usando Plugins
Criando seus próprios complementos
Criando um plugin usando bake
Rotas para Plugin
Plugin Controllers
Plugin Models
Plugin Views
Substituindo Templates de plugins do na sua aplicação
Plugin Assets
Linking to Assets in Plugins
Components, Helpers and Behaviors
Expanda seu plugin
Publique seu plugin
REST
A Configuração é simples
Aceitando entrada em outros formatos
Roteamento RESTful
Segurança
Segurança
Criptografando e Descriptografando Dados
Escolhendo uma implementação de criptografia
Fazendo Hash de dados
Gerando dados aleatórios seguros
Middleware
Middleware em CakePHP
Usando Middleware
Adicionando Middleware a partir de Plugins
Criando um Middleware
Roteamento de Middleware
Middleware de Cabeçalho de Segurança
Middleware do Cabeçalho da Política de Segurança de Conteúdo
Middleware de Cookie Criptografado
Falsificação de Solicitação entre Sites (CSRF) Middleware
Integração com FormHelper
Solicitações de Proteção CSRF e AJAX
Body Parser Middleware
Sessões
Configuração da Sessão
Manipuladores de sessão e configuração incorporados
Manipuladores de Sessão
Sessões de Banco de Dados
Sessões de Cache
Definindo diretivas ini
Criando um manipulador de sessão personalizado
Acessando o Objeto de Sessão
Leitura e gravação de dados da sessão
Destruindo a Sessão
Identificadores de Sessão Rotativos
Mensagens em Flash
Testing
Instalando o PHPUnit
Instalando o PHPUnit com Composer
Usando o arquivo PHAR
Configuração do banco de dados de teste
Verificando a Configuração de Teste
Convenções de Casos de Teste
Criando seu Primeiro Caso de Teste
Executando Testes
Filtrando Casos de Teste
Gerando Cobertura de Código
Combinando Conjuntos de Testes para Plug-ins
Retornos de Chamada do Ciclo de Cida do Caso de Teste
Fixtures
Conexões de Teste
Criando Fixtures
Dados Dinâmicos e Fixtures
Importando Informações da Tabela
Carregando Fixtures em seus Casos de Teste
Classes de Tabela de Teste
Criando um Método de Teste
Métodos Mocks de Modelo
Teste de Integração do Controlador
Configurando a Solicitação
Testando Ações que Exigem Autenticação
Testando Autenticação Stateless e APIs
Testando Ações Protegidas por CsrfProtectionMiddleware ou FormProtectionComponent
Teste de Integração PSR-7 Middleware
Testando com Cookies Criptografados
Testando Mensagens Flash
Testando um Controlador Com Resposta em JSON
Teste com carregamentos de ficheiros
Desabilitando o Tratamento de Erros de Middlewares nos Testes
Métodos Assertion
Comparando Resultados de Teste com um Arquivo
Teste de Integração de Console
Testando Views
Testando Componentes
Testando Ajudantes
Testando Eventos
Testando Email
Criando Suítes de Teste
Criando Testes para Plugins
Gerando Testes com o Bake
Integração com Jenkins
Criando um Trabalho
Adicionar Configuração do Banco de Dados de Teste
Adicione seus Testes
Executando uma Build
Validação
Classes utilitárias
Classe App
Encontrando Classes
Localizando Caminhos para Namespaces
Localizando Plugins
Localizando Temas
Carregando Arquivos do Fornecedor
Coleções
Exemplo Rápido
Lista de Métodos
Iterando
Filtragem
Agregação
Agrupamento e Contagem
Ordenação
Trabalhando com dados em Árvore
Outros Métodos
Retirando Elementos
Expansão de Coleções
Elementos de Modificação
Tornando Reutilizáveis os Métodos de Coleta
Otimizando Coleções
Tornando as Coleções Rebobináveis
Coleções de Clonagem
Pasta & Arquivo
Uso Básico
API Pastas
API de Arquivos
Hash
Sintaxe do Caminho de Hash
Tipos de Expressão
Tipos de Correspondência de Atributos
Cliente Http
Fazendo Solicitações
Criação de Solicitações Multipart com Arquivos
Criação de Corpos de Solicitação de Várias Partes Manualmente
Enviando o Corpo da Solicitação
Opções de Método para Solicitação
Autenticação
Usando Autenticação Básica
Usando a Autenticação Digest
Autenticação OAuth 1
Autenticação OAuth 2
Autenticação no Proxy
Criação de Clientes com Escopo
Configuração e Gerenciamento de Cookies
Objetos de Resposta
Leitura do Corpo da Resposta
Lendo Corpo de Respostas JSON e XML
Acessando Cabeçalhos da Resposta
Acessando Dados do Cookie
Verificando o Código de Status
Alteração de Adaptadores de Transporte
Inflector
Resumo dos métodos de Inflexão e Suas Saídas
Criando as formas singulares e plurais
Criando as formas CamelCase e nome_sublinhado
Criando formas legíveis para humanos
Criando formatos para nomes de tabelas e classes
Criando nomes de variáveis
Criando strings de URL seguras
Configuração da inflexão
Carregando inflexões personalizadas
Número
Formatação de Valores Monetários
Definição da moeda padrão
Obtendo a moeda padrão
Formatando números de ponto flutuante
Formatação de Porcentagens
Interagindo com valores legíveis para humanos
Formatando Números
Diferenças de formato
Configurar formatadores
Objetos de Registro
Texto
Tempo
Xml
Plugins
Bake
chronos
Debug Kit
Migrations
Elasticsearch
Diversos
Constantes e Funções
Funções globais
Constantes de definição do Core
Constantes de definição de tempo
Apêndices
Guia de Migração para a versão 4.x
4.0 Migration Guide
Informações Gerais
Processo de desenvolvimento no CakePHP
Glossário
Bem-vindo
→