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
Help & Support
Forum
Stack Overflow
IRC
Slack
Paid Support
B
CakePHP 3.9 Red Velvet
Cookbook
A
Language:
fr
en
pt
es
ja
zh
tr
ru
Version:
3.x
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
Contenu
¶
Préface
CakePHP en un Coup d’Oeil
Conventions plutôt que Configuration
La Couche Model (Modèle)
La Couche View (Vue)
La Couche Controller (Contrôleur)
Cycle de Requête CakePHP
Que le Début
Lectures Complémentaires
Où obtenir de l’aide
Conventions de CakePHP
Structure du dossier de CakePHP
Guide de Démarrage Rapide
Tutoriel d’un système de gestion de contenu
Récupérer CakePHP
Vérifier l’installation
Tutoriel CMS - Création de la base de données
Configuration de la base de données
Création du premier Model
Tutoriel CMS - Création du Controller Articles
Création du Template de liste des Articles
Création de l’action View
Création du template View
Ajouter des articles
Création du Template Add
Ajout de la génération de slug
Ajout de l’action Edit
Création du template Edit
Mise à jour des règles de validation pour les Articles
Ajout de l’Action de Suppression
3.x Guide de Migration
3.6 Guide de Migration
3.6 Migration Guide
3.5 Guide de Migration
3.5 Guide de Migration
3.4 Guide de Migration
3.4 Guide de Migration
3.3 Guide de Migration
3.3 Guide de Migration
3.2 Guide de Migration
3.2 Guide de Migration
3.1 Guide de Migration
3.1 Guide de Migration
3.0 Guide de Migration
3.0 Guide de Migration
Guide de Migration du Nouvel ORM
Tutoriels et exemples
Tutoriel d’un système de gestion de contenu
Récupérer CakePHP
Vérifier l’installation
Tutoriel CMS - Création de la base de données
Configuration de la base de données
Création du premier Model
Tutoriel CMS - Création du Controller Articles
Création du Template de liste des Articles
Création de l’action View
Création du template View
Ajouter des articles
Création du Template Add
Ajout de la génération de slug
Ajout de l’action Edit
Création du template Edit
Mise à jour des règles de validation pour les Articles
Ajout de l’Action de Suppression
Tutoriel CMS - Tags et Users
Ajouter un système de Tags aux Articles
Mettre à jour la gestion des Articles pour permettre d’ajouter des Tags
Trouver des Articles via les Tags
Améliorer la Gestion des Tags
Tutoriel CMS - Authentification
Ajout du Hash du Mot de Passe
Contribuer
Documentation
Traductions
Guide de mise en forme de la documentation
Tickets
Rapporter des bugs
Rapporter des problèmes de sécurité
Code
Configuration Initiale
Travailler sur un Correctif
Soumettre un Pull Request
Normes de codes
Ajout de Nouvelles Fonctionnalités
Configuration de l’IDE
Indentation
Longueur des lignes
Structures de Contrôle
Comparaison
Appels des Fonctions
Définition des Méthodes
Chaînage des Méthodes
Commenter le Code
Inclure les Fichiers
Les Balises PHP
Convention de Nommage
Attention quand vous utilisez empty()/isset()
Guide de Compatibilité Rétroactive
Guides de Migration
Utiliser CakePHP
Travailler avec CakePHP
Depréciations
Pour Commencer
Installation
Exigences
Installer CakePHP
Installer Composer
Créer un Projet CakePHP
Rester à jour avec les derniers changements de CakePHP
Installation en utilisant Oven
Permissions
Serveur de Développement
Production
A vous de jouer !
Réécriture d’URL
Apache
nginx
IIS7 (serveurs Windows)
Je ne peux pas utiliser la réécriture d’URL
Configuration
Configurer votre Application
Charger les Fichiers de Configuration Supplémentaires
Configuration Générale
Configuration de la Base de Données
Configuration de la Mise en Cache
Configuration de Gestion des Erreurs et des Exceptions
Configuration des Logs
Configuration de Email
Configuration de Session
Configuration du Routing
Chemins de Classe Supplémentaires
Les chemins de Plugin, View Template et de Locale
Configuration de Inflection
Variables d’Environnement
Classe Configure
Ecrire des Données de Configuration
Lire les Données de Configuration
Vérifier si les Données de Configuration sont Définies
Supprimer une Donnée de Configuration
Lire & Supprimer les Données de Configuration
Lire et Ecrire les Fichiers de Configuration
Chargement des Fichiers de Configuration
Créer et Modifier les Fichiers de Configuration
Stocker la Configuration de Runtime
Restaurer la configuration de runtime
Moteurs de Configuration
Bootstrapping CakePHP
Application::bootstrap()
Désactiver les tables génériques
Routing
Tour Rapide
Connecter les Routes
Les Eléments de Route
Configurer les Options de Route
Passer des Paramètres à l’Action
Utiliser les Routes Nommées
Prefix de Routage
Routing des Plugins
Créer des Liens vers des Routes de Plugins
Routing Favorisant le SEO
Matching des Méthodes HTTP Spécifiques
Matching de Noms de Domaine Spécifiques
Routing des Extensions de Fichier
Connecter des Middlewares à un scope
Grouper les Middlewares
Créer des Routes RESTful
Créer des Routes de Ressources Imbriquées
Limiter la Création des Routes
Changer les Actions du Controller
Mapper des Routes de Ressource Supplémentaires
Classes de Route Personnalisée pour les Ressources
Inflection de l’URL pour les Routes Ressource
Changer le chemin d’un élément
Arguments Passés
Générer des URLs
Routing de Redirection
Classes Route Personnalisées
Classe de Route par Défaut
Méthode Fallbacks
Créer des Paramètres d’URL Persistants
Gérer les Paramètres Nommés dans les URLs
Filtres du Dispatcher
Les Objets Request & Response
ServerRequest
Paramètres de la Requête
Accéder aux Paramètres Querystring
Données du Corps de la Requête
Accéder aux Données PUT, PATCH ou DELETE
Variables d’Environnement (à partir de $_SERVER et $_ENV)
Données XML ou JSON
Informations du Chemin
Vérifier les Conditions de la Requête
Données de Session
Hôte et Nom de Domaine
Lire la Méthode HTTP
Restreindre les Méthodes HTTP qu’une Action Accepte
Lire les en-têtes HTTP
Faire Confiance aux Headers de Proxy
Vérifier les En-têtes Acceptés
Cookies
Response
Gérer les Types de Contenu
Envoyer des fichiers
Envoyer une Chaîne de Caractères en Fichier
Streaming Resources
Définir les En-têtes
Définir le Corps de la réponse
Définir le Character Set
Interagir avec le Cache du Navigateur
Configuration affinée du Cache HTTP
Définir des Cookies
Définir les En-têtes de Requête d’Origine Croisée (Cross Origin Request Headers = CORS)
Erreurs Communes avec les Responses Immutables
CookieCollections
Créer des Cookies
Lire des Cookies
Middleware
Les Middlewares dans CakePHP
Utilisation des Middleware
Ajout de Middleware à partir de Plugins
Requêtes et Réponses PSR-7
Interagir avec les Requêtes
Interagir avec les Réponses
Créer un Middleware
Ajouter des Headers de Sécurité
Middleware de Gestion de Cookies Chiffrés
Middleware Cross Site Request Forgery (CSRF)
Intégration avec le FormHelper
Protection CSRF et Requêtes AJAX
Ajout de la nouvelle pile HTTP à une application existante
Controllers (Contrôleurs)
Le Controller App
Déroulement d’une Requête
Les Actions du Controller
Interactions avec les Vues
Définir les Variables de View
Définir les Options d’une View
Rendre une View
Rediriger vers d’Autres Pages
Rediriger vers une Autre Action du Même Controller
Chargement des Models Supplémentaires
Paginer un Model
Configurer les Components à Charger
Configurer les Helpers à Charger
Cycle de Vie des Callbacks de la Requête
Event List
Callback des Controllers
Plus sur les Controllers
Le Controller Pages
Components (Composants)
Views (Vues)
La View App
Templates de Vues
Sorties Alternatives
Structures de Contrôle Alternatives
Variables de Vue
Définir les Variables de Vue
Vues étendues
Utiliser les Blocks de Vues
Afficher les Blocks
Utiliser des Blocks pour les Fichiers de Script et les CSS
Layouts
Utiliser les layouts à partir de plugins
Elements
Passer des Variables à l’intérieur d’un Element
Mise en cache des Elements
Requêter les Elements à partir d’un Plugin
Préfix de Routing et Elements
Mettre en Cache des Sections de votre View
Events de View
Liste des Events
Créer vos propres Classes de View
En savoir plus sur les vues
View Cells
Themes
Vues JSON et XML
Helpers (Assistants)
Accès Base de Données & ORM
Exemple Rapide
Pour en savoir plus sur les Models
Notions de Base de Base de Données
Query Builder
Les Objets Table
Entities
Récupérer les Données et les Ensembles de Résultats
Valider des Données
Sauvegarder les Données
Supprimer des Données
Associations - Lier les Tables Ensemble
Behaviors (Comportements)
Système de Schéma
Shell du Cache du Schéma
Généralités
Authentification
Lectures Suggérées Avant de Continuer
Authentification
Choisir un Type d’Authentification
Configuration des Gestionnaires d’Authentification
Personnaliser la Requête de Recherche
Identifier les Utilisateurs et les Connecter
Rediriger les Utilisateurs Après Connexion
Création de Systèmes d’Authentification Stateless
Utiliser l’Authentification Basic
Utiliser l’Authentification Digest
Créer des Objets d’Authentification Personnalisés
Utilisation d’Objets d’Authentification Personnalisés
Gestion des Requêtes non Authentifiées
Afficher les Messages Flash de Auth
Hachage des Mots de Passe
Créer des Classes de Hash de Mot de Passe Personnalisé
Changer les Algorithmes de Hashage
Connecter les Utilisateurs Manuellement
Accéder à l’Utilisateur Connecté
Déconnexion des Utilisateurs
Décider quand lancer l’Authentification
Autorisation
Configurer les Gestionnaires d’Autorisation
Création d’Objets Authorize Personnalisés
Ne pas Utiliser d’Autorisation
Rendre des Actions Publiques
Fabriquer des Actions qui requièrent des Autorisations
Utilisation de ControllerAuthorize
Options de Configuration
Tester des Actions Protégées par AuthComponent
La mise en cache
Configuration de la classe Cache
Configurer un Fallback de Cache
Suppression de Configuration de Cache
Ecrire dans un Cache
Ecrire Plusieurs Clés d’un Coup
Lire un Cache Distribué
Lire depuis un Cache
Lire Plusieurs Clés d’un Coup
Suppression d’un Cache
Supprimer Plusieurs Clés d’un Coup
Effacer les Données du Cache
Utiliser le Cache pour Stocker les Compteurs
Utiliser le Cache pour Stocker les Résultats de Requêtes Courantes
Utilisation des Groupes
Activer ou Désactiver Globalement le Cache
Création d’un moteur de stockage pour le Cache
Outils de Console, Shells, & Tasks
La console de CakePHP
Créer un Shell
Les Tâches Shell
Chargement à la volée des tâches avec TaskCollection
Utiliser les Models dans vos shells
Shell Helpers
Appeler d’autres Shells à partir de votre Shell
Passer des paramètres supplémentaires au Shell appelé
Récupérer les Entrées de l’Utilisateur
Créer des Fichiers
Sortie de la Console
Niveaux de sortie de la Console
Style de sortie
Enlever la coloration
Arrêter l’Exécution d’un Shell
Statuts et Codes d’Erreur
Méthodes Hook
Configurer les options et générer de l’aide
Configurer un option parser avec l’interface chainée
Ajouter des Arguments
Validation des Arguments
Ajouter des Options
Validation des Options
Utiliser les Options Booléennes
Ajouter des sous-commandes
Construire un ConsoleOptionParser à partir d’un Tableau
Fusionner les ConsoleOptionParsers
Obtenir de l’Aide dans les Shells
Obtenir de l’Aide en XML
Renommer des Commandes
Routing dans shells / CLI
Plus de sujets
Shell Helpers
Console Interactive (REPL)
Exécuter des Shells en Tâches Cron (Cron Jobs)
Shell I18N
Shell du Cache du Schéma
Complétion du Shell
Shell Plugin
Shell Routes
Shell de Mise à Jour
Serveur Shell
Shell Cache
Debugger
Debug Basique
Utiliser la Classe Debugger
Affichage des Valeurs
Masquer des Données
Logging With Stack Traces
Generating Stack Traces
Getting an Excerpt From a File
Utiliser les Logs pour Debugger
Kit de Debug
Déploiement
Déplacer les Fichiers
Modifier le fichier config/app.php
Vérifier Votre Sécurité
Définir le Document Root
Améliorer les Performances de votre Application
Déployer une Mise à Jour
Email
Utilisation basique
Choisir l’émetteur
Configuration
Configurer les Transports
Profiles de Configurations
Définir les Headers
Envoyer les Emails Templatés
Envoyer les pièces jointes
Utiliser les Transports
Créer des Transports Personnalisés
Faciliter les Règles de Validation des Adresses
Envoyer des Messages Rapidement
Envoyer des Emails depuis CLI
Créer des emails réutilisables
Gestion des Erreurs & Exceptions
Configuration des Erreurs et des Exceptions
Créer vos Propres Gestionnaires d’Erreurs
Changer le Comportement des Erreurs Fatales
Classes des Exceptions
Exceptions Intégrées de CakePHP
Exceptions HTTP
Autres Exceptions Intégrées
Utiliser les Exceptions HTTP dans vos Controllers
Exception Renderer
Créer vos Propres Exceptions dans votre Application
Créer des Codes de Statut Personnalisés
Etendre et Implémenter vos Propres Gestionnaires d’Exceptions
Créer votre Propre Gestionnaire d’Exceptions
Etendre le BaseErrorHandler
Utiliser l’Option exceptionRenderer dans le Gestionnaire par Défaut
Créer un Controller Personnalisé pour Gérer les Exceptions
Logger les Exceptions
Événements système
Exemple d’Utilisation d’Événement
Accéder aux Gestionnaires d’Événements
Le Gestionnaire d’Événement Global
Suivre la Trace des Événements
Events du Cœur
Enregistrer les Listeners
Enregistrer des Écouteurs Anonymes
Interagir avec les Listeners Existants
Etablir des Priorités
Obtenir des Données d’Event en Paramètres de Fonction
Dispatcher les Events
Stopper les Events
Obtenir des Résultats d’Evenement
Retirer les Callbacks et les Listeners
Lecture Supplémentaire
Internationalisation & Localisation
Internationaliser Votre Application
Fichiers de Langues
Extraire les Fichiers Pot avec le Shell I18n
Définir la Locale par Défaut
Modifier la Locale pendant l’Exécution
Utiliser les Fonctions de Traduction
Utiliser des Variables dans les Traductions de Messages
Pluriels
Créer Vos Propres Traducteurs
Créer des Parsers de Messages
Créer des Traducteurs Génériques
Pluriels et Contexte dans les Traducteurs Personnalisés
Utiliser des Formateurs Différents
Localiser les Dates et les Nombres
Parser les Données Datetime Localisées
Sélection Automatique de Locale Basée sur les Données de Requêtes
Journalisation (logging)
Configuration des flux d’un log (journal)
Créer des Adaptateurs de Log
Journalisation des Erreurs et des Exception
Interagir avec les Flux de Log
Utilisation de l’Adaptateur FileLog
Logging vers Syslog
Ecrire dans les logs
Utiliser les Niveaux
Scopes de Journalisation
l’API de Log
Méthodes pratiques
Logging Trait
Utiliser Monolog
Formulaires Sans Models
Créer un Formulaire
Traiter les Données de Requêtes
Définir des Valeurs pour le Formulaire
Récupérer les Erreurs d’un Formulaire
Invalider un Champ de Formulaire depuis un Controller
Créer le HTML avec FormHelper
Pagination
Utiliser Controller::paginate()
Utiliser Directement Paginator
Requêtes de Paginating Multiple
Contrôler les Champs Utilisés pour le Tri
Limiter le Nombre Maximum de Lignes par Page
Faire des Jointures d’Associations Supplémentaires
Requêtes de Page Out of Range
Pagination dans la Vue
Plugins
Installer un Plugin Avec Composer
Plugin Map File
Charger un Plugin
Autochargement des Classes du Plugin
Configuration du Plugin
Utiliser un Plugin
Créer Vos Propres Plugins
Créer un Plugin en utilisant Bake
Routes de Plugins
Controllers du Plugin
Models du Plugin
Vues du Plugin
Redéfinition des Template de Plugin depuis l’Intérieur de votre Application
Assets de Plugin
Lier aux plugins
Components, Helpers et Behaviors
Etendez votre Plugin
Publiez votre Plugin
REST
Mise en place Simple
Accepter l’Input dans d’Autres Formats
RESTful Routing
Sécurité
Security
Chiffrer et Déchiffrer les Données
Hashage des Données
Getting Secure Random Data
Cross Site Request Forgery
Utiliser le CsrfComponent
Intégration avec le FormHelper
Protection CSRF et Requêtes AJAX
Désactiver le Component CSRF pour des Actions Spécifiques
SecurityComponent (Sécurité)
Gestion des callbacks Blackhole
Restreindre les actions aux actions SSL
Restreindre les Demandes croisées de Controller
Prévention de la Falsification de Formulaire
Utilisation
Protection CSRF
Désactiver le Component Security pour des Actions Spécifiques
Sessions
Configuration de Session
Gestionnaires de Session intégrés & Configuration
Gestionnaires de Session
Les Sessions de la Base de Données
Les Sessions de Cache
Configurer les Directives ini
Créer un Gestionnaire de Session Personnalisé
Accéder à l’Objet Session
Lire & Ecrire les Données de Session
Détruire la Session
Faire une Rotation des Identificateurs de Session
Messages Flash
Testing
Installer PHPUnit
Installer PHPUnit avec Composer
Utiliser le fichier PHAR
Tester la Configuration de la Base de Données
Vérifier la Configuration Test
Conventions des Cas de Test (TestCase)
Créer Votre Premier Cas de Test
Lancer les Tests
Filtrer les Cas de Test (TestCase)
Générer une Couverture de Code (Code Coverage)
Combiner les Suites de Test pour les Plugins
Les Callbacks du Cycle de Vie des Cas de Test
Fixtures
Connexions de Test
Créer les Fixtures
Les Données Dynamiques et les Fixtures
Importer les Informations de Table
Charger les Fixtures dans vos Tests (TestCase)
Fixture Factories
Tester les Classes Table
Créer une Méthode de Test
Méthodes de Mocking des Models
Test d’Intégrations des Controllers
Configurer la Requête
Tester des Actions Protégées par AuthComponent
Test de l’Authentification stateless (sans état) et des APIs
Tester les Actions Protégées par CsrfComponent ou SecurityComponent
Test d’intégration sur les middlewares PSR-7
Tester avec des cookies chiffrés
Tester les Messages Flash
Tester un controller retournant du JSON
Désactiver le Middleware de Gestion d’Erreurs dans les Tests
Méthodes d’Assertion
Comparer les Résultats du Test avec un Fichier
Tester avec des Cookies Chiffrés
Tester un Controller dont la Réponse est au format JSON
Tests d’Intégration de la Console
Tester les Shells Interactifs
Tester le CommandRunner
Méthodes d’assertions
Tester les Views
Tester les Components
Tester les Helpers
Tester les Events
Créer des Suites de Test (Test Suites)
Créer des Tests pour les Plugins
Générer des Tests avec Bake
Intégration avec Jenkins
Créer un Job
Ajouter une Config de Base de Données de Test
Ajouter vos Tests
Lancer un Build
Validation
Créer les Validators
Valider la Présence d’un champ
Permettre aux Champs d’être Vides
Marquer les Règles comme étant les Dernières à être exécutées
Méthodes de Validation Moins Verbeuses
Ajouter des Providers de Validation
Règles de Validation Personnalisées
Validation Conditionnelle
Imbriquer des Validators
Créer des Validators Ré-utilisables
Valider les Données
Valider les Entities
Règles de Validation du Cœur
Utilitaires
Classe App
Trouver les Classes
Trouver les Chemins vers les Namespaces
Localiser les Plugins
Localiser les Themes
Charger les Fichiers de Vendor
Collections
Exemple Rapide
Liste des Méthodes
Faire une Itération
Filtrer
Agrégation
Grouper et Compter
Trier
Utiliser des Données en Arbre
Autres Méthodes
Retrait d’Eléments
Agrandir les Collections
Modification d’Eléments
Créer des Méthodes de Collection Réutilisables
Optimiser les Collections
Rendre les Collections Rembobinables
Clonage de Collection
Folder & File
Utilisation Basique
API de Folder
L’API de File
Hash
Syntaxe de chemin Hash
Types d’expression
Les Types d’Attribut Correspondants
Client Http
Faire des Requêtes
Créer des Requêtes Multipart avec des Fichiers
Construire des Corps de Requête Multipart à la Main
Envoyer des Corps de Requête
Options de la Méthode Request
Authentification
Utiliser l’Authentication Basic
Utiliser l’Authentification Digest
Authentification OAuth 1
Authentification OAuth 2
Authentification Proxy
Créer des Scoped Clients
Configurer et Gérer les Cookies
Objets Response
Lire des Corps des Réponses
Lire des Corps de Réponse JSON et XML
Accéder aux En-têtes de la Réponse
Accéder aux données de Cookie
Vérifier le Code de statut
Inflector
Résumé des Méthodes d’Inflector et de leurs Sorties
Créer des Formes Pluriel et Singulier
Créer des Formes en CamelCase et en Underscore
Créer des Formes Lisibles par l’Homme
Créer des Formes pour les Tables et les Noms de Classe
Créer des Noms de Variable
Créer des Chaînes d’URL Safe
Configuration d’Inflexion
Charger les Inflexions Personnalisées
Number
Formatage des Devises
Paramétrage de la Devise par Défaut
Formatage Des Nombres A Virgules Flottantes
Formatage Des Pourcentages
Interagir Avec Des Valeurs Lisibles Par L’Homme
Formatage Des Nombres
Formatage Des Différences
Configurer le Formatage
Objets Registry
Charger les Objets
Attraper les Callbacks
Désactiver les Callbacks
Text
Convertion des Chaînes de Caractères en ASCII
Créer des chaînes saines pour les URL
Générer des UUIDs
Parseur de chaînes simples
Formater une chaîne
Fixer la largeur d’un texte
Subrillance de Sous-Chaîne
Retirer les Liens
Tronquer le Texte
Tronquer une chaîne par la fin
Générer un Extrait
Convertir un tableau sous la forme d’une phrase
Date & Time
Créer des Instances Time
Manipulation
Formatage
Définir la Locale par défaut et la Chaîne Format
Formater les Temps Relatifs
Conversion
Comparer Avec le Present
Comparer Avec les Intervals
Dates
Dates et Heures Immutables
Accepter des Données Requêtées Localisées
Xml
Importer les données vers la classe Xml
Transformer une Chaîne de Caractères XML en Tableau
Transformer un tableau en une chaîne de caractères XML
Utiliser des Namespaces
Créer un enfant
Plugins
Bake
Chronos
Debug Kit
Migrations
Elasticsearch
Outil d’Upgrade
Installation
Utilisation
Divers
Globales & Fonctions
Fonctions Globales
Définitions des constantes du noyau
Définition de Constantes de Temps
Annexes
3.x Guide de Migration
3.x Guide de Migration
Informations générales
Le Processus de Développement CakePHP
Glossaire
Phinx
Phinx
Bienvenue
→
Follow @CakePHP