• Aide
  • Eurêkoi Eurêkoi

Livre

Développez votre site web avec le framework Symfony3

Résumé

Guide à destination des développeurs de sites web, pour mettre en place des environnements de test et de production, concevoir les contrôleurs et les templates, gérer la traduction et communiquer avec une base de données. ©Electre 2016


  • Contributeur(s)
  • Éditeur(s)
  • Date
    • DL 2016
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (XIX-514 p.) : ill. ; 24 cm
  • Collections
  • Sujet(s)
  • ISBN
    • 978-2-212-14403-1
  • Indice
  • Quatrième de couverture
    • Développez votre site web avec le framework

      Symfony 3

      Vous développez des sites web régulièrement et vous en avez assez de réinventer la roue ? Vous aimeriez utiliser les bonnes pratiques de développement PHP pour concevoir des sites de qualité professionnelle ? Cet ouvrage vous permettra de prendre en main Symfony, le framework PHP de référence. Comment créer un nouveau projet avec Symfony, mettre en place les environnements de test et de production, concevoir les contrôleurs, les templates, gérer la traduction et communiquer avec une base de données via Doctrine ? Vous découvrirez comment ce puissant framework, supporté par une large communauté, va vous faire gagner en efficacité.

      Qu'allez-vous apprendre ?

      Vue d'ensemble de Symfony

      • Symfony, un framework PHP
      • Vous avez dit Symfony ?
      • Utiliser la console pour créer un bundle

      Les bases de Symfony

      • Mon premier « Hello World ! » avec Symfony
      • Le routeur de Symfony
      • Les contrôleurs avec Symfony
      • Le moteur de templates Twig
      • Installer un bundle grâce à Composer
      • Les services, théorie et création

      Gérer la base de données avec Doctrine2

      • La couche métier : les entités
      • Manipuler ses entités avec Doctrine2
      • Les relations entre entités avec Doctrine2
      • Récupérer ses entités avec Doctrine2
      • Les événements et extensions Doctrine
      • TP : consolidation de notre code

      Aller plus loin avec Symfony

      • Créer des formulaires avec Symfony
      • Valider ses données
      • Sécurité et gestion des utilisateurs
      • Les services, fonctions avancées
      • Le gestionnaire d'événements de Symfony
      • Traduire son site

      Préparer la mise en ligne

      • Convertir les paramètres de requêtes
      • Personnaliser les pages d'erreur
      • Utiliser Assetic pour gérer les codes CSS et JS
      • Utiliser la console depuis le navigateur
      • Déployer son site Symfony en production

  • Tables des matières
      • SYMF0NY3

      • Alexandre Bacco

      • Fabien Potencier

      • Eyrolles

      • Introduction 1
      • Première partie - Vue d'ensemble de Symfony3
      • 1 Symfony, un framework PHP 5
      • Qu'est-ce qu'un framework ?6
      • L'objectif d'un framework 6
      • Définition 6
      • Objectif d'un framework 6
      • Pesons le pour et le contre 7
      • Alors, convaincus ? 8
      • Qu'est-ce que Symfony ?8
      • Un framework 8
      • Un framework populaire 8
      • Un framework populaire et français 9
      • Qu'est-il possible de faire avec Symfony ? 9
      • Télécharger Symfony10
      • Vérifier l'installation de PHP en console 10
      • Obtenir Symfony 11
      • Droits d'accès 13
      • En résumé14
      • 2 Vous avez dit Symfony ? 15
      • L'architecture des fichiers15
      • Liste des répertoires 15
      • Le répertoire /app 16
      • Le répertoire /bin 16
      • Le répertoire /src 16
      • Le répertoire /tests 16
      • Le répertoire /var 16
      • Le répertoire /vendor 16
      • Le répertoire /web 17
      • À retenir 17
      • Le contrôleur frontal 17
      • L'architecture conceptuelle20
      • Architecture MVC 20
      • Parcours d'une requête dans Symfony 21
      • Symfony et ses bundles 23
      • La découpe en bundles 23
      • L'intérêt 23
      • La bonne pratique 24
      • Les bundles de la communauté 24
      • La structure d'un bundle 25
      • En résumé25
      • 3 Utilisons la console pour créer un bundle 27
      • Utilisation de la console27
      • Sous Windows 27
      • Sous Linux et Mac 28
      • À quoi cela sert-il ? 28
      • Comment cela marche-t-il ? 29
      • Le fil rouge de notre cours : une plate-forme d'échange30
      • Créons notre bundle30
      • Tout est bundle 30
      • Exécuter la bonne commande 30
      • Que s'est-il passé ? 33
      • Pour conclure 36
      • En résumé36
      • Deuxième partie - Les bases de Symfony37
      • 4 Mon premier « Hello World ! » avec Symfony 39
      • Créer sa route39
      • Quel est le rôle du routeur ? 39
      • Créer son fichier de routes 40
      • Informer Symfony que nous avons des routes pour lui 41
      • Créer son contrôleur41
      • Quel est le rôle du contrôleur ? 41
      • Notre propre contrôleur 42
      • Créer son template Twig43
      • Les templates avec Twig 43
      • Utiliser Twig avec Symfony 44
      • L'objectif : créer une plate-forme d'annonces47
      • Un peu de nettoyage48
      • Schéma de développement sous Symfony48
      • Pour conclure49
      • En résumé50
      • 5 Le routeur de Symfony 51
      • Le fonctionnement51
      • Fonctionnement du routeur 52
      • Convention pour le nom du contrôleur 54
      • Les routes de base54
      • Créer une route 54
      • Créer une route avec des paramètres 55
      • Les routes avancées57
      • Créer une route avec des paramètres et leurs contraintes 57
      • Utiliser des paramètres facultatifs 58
      • Utiliser des « paramètres système » 59
      • Ajouter un préfixe lors de l'import de nos routes 60
      • Générer des URL61
      • Pourquoi générer des URL ? 61
      • Comment générer des URL ? 61
      • Application : les routes de notre plate-forme63
      • Page d'accueil 63
      • Page de visualisation d'une annonce 63
      • Ajout, modification et suppression 64
      • Récapitulatif 64
      • Pour conclure65
      • En résumé66
      • 6 Les contrôleurs avec Symfony 67
      • Le rôle du contrôleur67
      • Retourner une réponse 67
      • Manipuler l'objet Request69
      • Les paramètres de la requête 69
      • Les autres méthodes de l'objet Request 72
      • Savoir si la requête est une requête Ajax 72
      • Manipuler l'objet Response73
      • Décomposition de la construction d'un objet Response 73
      • Réponses et vues 73
      • Réponse et redirection 75
      • Changer le Content-type de la réponse 77
      • Manipuler la session78
      • Application : le contrôleur de notre plate-forme81
      • À retenir83
      • L'erreur 404 83
      • La définition des méthodes 83
      • Tester les types d'erreurs 84
      • Pour conclure85
      • En résumé85
      • 7 Le moteur de templates Twig 87
      • Les templates Twig87
      • Intérêt 87
      • Des pages web, mais aussi des e-mails et autres 88
      • En pratique 88
      • À savoir 89
      • Afficher des variables89
      • Syntaxe élémentaire pour afficher des variables 89
      • Précisions sur la syntaxe {{ objet.attribut }} 90
      • Les filtres utiles 90
      • Twig et la sécurité 91
      • Les variables globales 92
      • Structures de contrôle et expressions93
      • Les structures de contrôle 93
      • Les tests utiles 95
      • Hériter et Inclure des templates96
      • L'héritage de template 96
      • L'inclusion de templates 100
      • L'inclusion de contrôleurs 101
      • Application : les templates de notre plate-forme103
      • Layout général 104
      • Layout du bundle 106
      • Les templates finaux 106
      • Pour conclure113
      • En résumé114
      • 8 Installer un bundle grâce à Composer 115
      • Composer, qu'est-ce que c'est ?115
      • Un gestionnaire de dépendances 115
      • Comment Composer sait-il où trouver les bibliothèques ? 116
      • Un outil innovant... dans l'écosystème PHP 116
      • Concrètement, comment fonctionne Composer ? 116
      • Installer Composer et Git116
      • Installer Composer 116
      • Installer Git 117
      • Installer un bundle grâce à Composer118
      • Manipulons Composer 118
      • Mettons à jour Symfony 120
      • Installer un bundle avec Composer 121
      • Gérer manuellement l'autoload d'une bibliothèque 123
      • Pour conclure124
      • En résumé124
      • 9 Les services, théorie et création 125
      • Pourquoi utiliser des services ?125
      • Genèse 125
      • Qu'est-ce qu'un service ? 126
      • L'avantage de la programmation orientée services 126
      • Le conteneur de services 126
      • Comment définir les dépendances entre services ? 129
      • Le partage des services 129
      • Utiliser un service en pratique130
      • Créer un service simple131
      • Créer la classe du service 131
      • Configurer le service 132
      • Utiliser le service 134
      • Créer un service avec des arguments135
      • Injecter des arguments dans nos services 135
      • Injecter des dépendances 137
      • Aperçu du code 137
      • Pour conclure138
      • En résumé139
      • Troisième partie - Gérer la base de données avec Doctrine2141
      • 10 La couche métier : les entités 143
      • Notions d'ORM : utiliser des objets à la place des requêtes143
      • Créer une première entité avec Doctrine2144
      • Une entité, c'est juste un objet 144
      • Une entité, c'est juste un objet... mais avec des commentaires ! 145
      • Créer une entité : le générateur à la rescousse ! 147
      • Affiner notre entité avec de la logique métier 149
      • À retenir 150
      • Tout sur le mapping !151
      • L'annotation Entity 151
      • L'annotation Table 151
      • L'annotation Column 152
      • Pour conclure154
      • En résumé155
      • 11 Manipuler ses entités avec Doctrine2 157
      • Matérialiser les tables en base de données157
      • Créer la table correspondante dans la base de données 157
      • Modifier une entité 159
      • À retenir 160
      • Utiliser le gestionnaire d'entités161
      • Les services Doctrine2 161
      • Les repositories 162
      • Enregistrer ses entités en base de données 164
      • Doctrine utilise les transactions 166
      • Doctrine simplifie la vie 166
      • Les autres méthodes utiles du gestionnaire d'entités 167
      • Récupérer ses entités avec un repository168
      • En résumé170
      • 12 Les relations entre entités avec Doctrine2 171
      • Notions de base sur les relations171
      • Entité propriétaire et entité inverse 171
      • Relations unidirectionnelle et bidirectionnelle 172
      • Relations et requêtes 172
      • Relation One-To-One173
      • Présentation 173
      • Définir la relation dans les entités 174
      • Exemple d'utilisation 178
      • Relation Many-To-One180
      • Présentation 180
      • Définir la relation dans les entités 183
      • Exemple d'utilisation 185
      • Relation Many-To-Many187
      • Présentation 187
      • Définir la relation dans les entités 188
      • Remplir la base de données avec les fixtures 191
      • Exemples d'utilisation 192
      • Relation Many-To-Many avec attributs197
      • Présentation 197
      • Définir la relation dans les entités 198
      • Remplir la base de données 201
      • Exemple d'utilisation 202
      • Les relations bidirectionnelles206
      • Présentation 206
      • Définir la relation dans les entités 206
      • Pour conclure211
      • En résumé211
      • 13 Récupérer ses entités avec Doctrine2 213
      • Le rôle des repositories213
      • Définition 213
      • Construire ses requêtes pour récupérer des entités 214
      • Les méthodes de récupération de base215
      • Définition 215
      • Les méthodes classiques 215
      • Les méthodes magiques 217
      • Les méthodes personnelles de récupération218
      • La théorie 218
      • Le QueryBuilder 218
      • La Query 223
      • Utiliser le Doctrine Query Language (DQL) 226
      • Utiliser les jointures dans les requêtes228
      • Pourquoi utiliser les jointures ? 228
      • Comment faire des jointures avec le QueryBuilder ? 228
      • Comment utiliser les jointures ? 230
      • Application : les repositories de notre plate-forme d'annonces231
      • Plan d'attaque 231
      • À vous de jouer ! 231
      • La correction 232
      • En résumé233
      • 14 Les événements et extensions Doctrine 235
      • Les événements Doctrine235
      • L'intérêt des événements Doctrine 235
      • Définir des callbacks de cycle de vie 236
      • Liste des événements de cycle de vie 238
      • Un autre exemple d'utilisation 239
      • Utiliser des services pour écouter les événements Doctrine 241
      • Essayons nos événements 244
      • Les extensions Doctrine246
      • L'intérêt des extensions Doctrine 246
      • Installer le StofDoctrineExtensionBundle 246
      • Utiliser une extension : l'exemple de Sluggable 247
      • Liste des extensions Doctrine 249
      • Pour conclure250
      • En résumé250
      • 15 TP : consolidation de notre code 251
      • Synthèse des entités251
      • Entité Advert 251
      • Entité Image 257
      • Entité Application 258
      • Entité Category 260
      • Entités Skill et AdvertSkill 261
      • Et bien sûr 263
      • Adaptation du contrôleur263
      • Théorie 263
      • Pratique 264
      • Utiliser des jointures267
      • Paginer des annonces sur la page d'accueil269
      • Pour conclure272
      • En résumé273
      • Quatrième partie - Aller plus loin avec Symfony275
      • 16 Créer des formulaires avec Symfony 277
      • Gérer des formulaires277
      • L'enjeu des formulaires 277
      • Qu'est-ce qu'un formulaire Symfony ? 278
      • Gérer simplement un formulaire 279
      • Ajouter des champs 282
      • Gérer de la soumission d'un formulaire 284
      • Gérer les valeurs par défaut du formulaire 287
      • Personnaliser l'affichage d'un formulaire 288
      • Créer des types de champs personnalisés 291
      • Externaliser la définition de ses formulaires291
      • Définir le formulaire dans AdvertType 291
      • Le contrôleur épuré 292
      • Les formulaires imbriqués294
      • Intérêt de l'imbrication 294
      • Un formulaire est un champ 294
      • Relation simple : imbriquer un seul formulaire 295
      • Relation multiple : imbriquer un même formulaire plusieurs fois 297
      • Un type de champ très utile : entity 303
      • L'option query_builder 305
      • Aller plus loin avec les formulaires307
      • L'héritage de formulaire 307
      • À retenir 308
      • Varier la méthode de construction d'un formulaire 308
      • Envoyer des fichiers avec le type de champ File311
      • Le type de champ File 311
      • Préparer l'objet sous-jacent 311
      • Adapter le formulaire 312
      • Manipuler le fichier envoyé 313
      • Automatiser le traitement grâce aux événements 315
      • Application : les formulaires de notre site320
      • Théorie 320
      • Pratique 320
      • Pour conclure326
      • En résumé326
      • 17 Valider ses données 327
      • Pourquoi valider des données ?327
      • Toujours se méfier des données de l'utilisateur 327
      • L'intérêt de la validation 327
      • La théorie de la validation 328
      • Définir les règles de validation328
      • Les différents formats de règles 328
      • Déclencher la validation334
      • Le service validator 334
      • La validation automatique sur les formulaires 335
      • Encore plus de règles de validation336
      • Valider depuis un accesseur 336
      • Valider intelligemment un attribut objet 337
      • Valider depuis un Callback 338
      • Valider un champ unique 339
      • Valider selon nos propres contraintes340
      • Créer la contrainte 341
      • Créer le validateur 342
      • Transformer son validateur en service 344
      • Définition du service 344
      • Modifier la contrainte 345
      • Modifier du validateur 345
      • Pour conclure347
      • En résumé347
      • 18 Sécurité et gestion des utilisateurs 349
      • Authentification et autorisation349
      • L'authentification 349
      • L'autorisation 350
      • Exemples 350
      • Processus général 353
      • Première approche de la sécurité354
      • Le fichier de configuration de la sécurité 354
      • Mettre en place un pare-feu 357
      • Les erreurs courantes 363
      • Depuis le contrôleur ou un service 364
      • Depuis une vue Twig 365
      • Gérer des autorisations avec les rôles365
      • Définition des rôles 366
      • Tester les rôles de l'utilisateur 367
      • Pour conclure sur les méthodes de sécurisation 370
      • Gérer des utilisateurs avec la base de données370
      • Qui sont les utilisateurs ? 370
      • Créons notre classe d'utilisateurs 371
      • Créer des utilisateurs de test 372
      • Définir l'encodeur pour la nouvelle classe d'utilisateurs 373
      • Définir le fournisseur d'utilisateurs 374
      • Demander au pare-feu d'utiliser le nouveau fournisseur 375
      • Manipuler les utilisateurs 375
      • Utiliser FOSUserBundle376
      • Installer FOSUserBundle 376
      • Hériter FOSUserBundle depuis le OCUserBundle 377
      • Modifier notre entité User 378
      • Configurer le bundle 379
      • Mettre à jour la table User 380
      • Configurer la sécurité pour utiliser le bundle 380
      • Configurer le fonctionnement de FOSUserBundle 382
      • Manipuler les utilisateurs avec FOSUserBundle 386
      • Pour conclure386
      • En résumé387
      • 19 Les services : fonctions avancées 389
      • Les tags sur les services389
      • Les tags 389
      • Comprendre les tags à travers Twig 389
      • Appliquer un tag à un service 390
      • Une classe qui implémente une interface 391
      • Écrire le code qui sera exécuté 392
      • Méthodologie 393
      • Les principaux tags 394
      • Les événements du coeur 394
      • Les types de champs de formulaire 394
      • Dépendances optionnelles : les appels de méthodes (calls)396
      • Les dépendances optionnelles 396
      • Les appels de méthodes (calls) 397
      • L'utilité des appels de méthodes 397
      • Les services courants de Symfony398
      • En résumé400
      • 20 Le gestionnaire d'événements de Symfony 401
      • Des événements ? Pour quoi faire ?401
      • Qu'est-ce qu'un événement ? 401
      • Qu'est-ce que le gestionnaire d'événements ? 402
      • Écouter tes événements403
      • Notre exemple 403
      • Créer un service et son écouteur 403
      • Écouter un événement 405
      • Créer la méthode à exécuter de l'écouteur 408
      • Méthodologie 411
      • Les événements Symfony... et les nôtres !412
      • Les événements Symfony 412
      • Créer ses propres événements 417
      • Allons un peu plus loin423
      • Les souscripteurs d'événements 423
      • L'ordre d'exécution des écouteurs 425
      • La propagation des événements 426
      • En résumé427
      • 21 Traduire son site 429
      • Introduction à la traduction429
      • Le principe 429
      • Traduire avec Symfony 430
      • Prérequis 431
      • Configuration 431
      • Mettre en place une page de test 432
      • Bonjour le monde433
      • Le filtre Twig {{ 'string'\trans }} 433
      • La balise de bloc Twig {% trans %} 433
      • Le service translator 434
      • Notre vue 435
      • Le catalogue435
      • Les formats de catalogue 436
      • La mise en cache du catalogue 437
      • Notre traduction 438
      • Ajouter un nouveau message à traduire 438
      • Extraire les chaînes sources d'un site existant 438
      • Traduire dans une nouvelle langue 440
      • Récupérer la locale de l'utilisateur440
      • Déterminer la locale 440
      • Routing et locale 441
      • Organiser vos catalogues443
      • Utiliser des mots-clés plutôt que du texte comme chaînes sources 444
      • Nicher les traductions 445
      • Permettre le retour à la ligne au milieu des chaînes cibles 446
      • Utiliser des listes 447
      • Utiliser les domaines 448
      • Domaines et bundles 449
      • Un domaine spécial : validators 449
      • Traductions dépendant de variables450
      • Les placeholders 450
      • Les placeholders dans le domaine validators 451
      • Gérer les pluriels 452
      • Afficher des dates au format local 453
      • Pour conclure456
      • En résumé457
      • Cinquième partie - Préparer la mise en ligne459
      • 22 Convertir les paramètres de requêtes 461
      • Théorie : pourquoi convertir des paramètres ?461
      • Récupérer des entités Doctrine avant même le contrôleur 461
      • Les convertisseurs de paramètres 462
      • Un convertisseur utile : DoctrineParamConverter 462
      • Un peu de théorie sur les convertisseurs 462
      • Pratique : utiliser les convertisseurs existants463
      • Utiliser le convertisseur Doctrine 463
      • Utiliser le convertisseur Datetime 467
      • Aller plus loin : créer ses propres convertisseurs468
      • Comment sont exécutés les convertisseurs ? 468
      • Comment Symfony trouve-t-il tous les convertisseurs ? 468
      • Créer un convertisseur 469
      • L'exemple de notre JsonParamConverter 470
      • En résumé472
      • 23 Personnaliser les pages d'erreur 473
      • Théorie : remplacer les vues d'un bundle473
      • Constater les pages d'erreur 473
      • Localiser les vues concernées 474
      • Remplacer les vues d'un bundle 474
      • Comportement de Twig 475
      • Pourquoi tous ces formats error.XXX.twig dans le répertoire Exception ? 475
      • Pratique : remplacer les templates Exception de TwigBundle476
      • Créer la nouvelle vue 476
      • Le contenu d'une page d'erreur 476
      • En résumé477
      • 24 Utiliser Assetic pour gérer les codes CSS et JS de votre site 479
      • Théorie : entre vitesse et lisibilité, pourquoi choisir ?479
      • À propos du nombre de requêtes HTTP d'une page web 479
      • Comment optimiser le front-end ? 480
      • Améliorer le temps de chargement ! 480
      • En action ! 480
      • Conclusion 481
      • Pratique : Assetic à la rescousse !481
      • Installer Assetic et les bibliothèques de compression 481
      • Servir des ressources 482
      • Modifier les ressources servies 484
      • Gérer le mode prod 486
      • Comprendre Assetic 486
      • Exporter ses fichiers CSS et JS 487
      • Et bien plus encore 488
      • En résumé488
      • 25 Utiliser la console depuis le navigateur 489
      • Théorie : le composant Console de Symfony489
      • Les commandes sont en PHP 489
      • Exemple d'une commande 490
      • Pratique : utiliser un ConsoleBundle491
      • ConsoleBundle ? 491
      • Télécharger CoreSphereConsoleBundle 492
      • Enregistrer le bundle dans le kernel 493
      • Enregistrer les routes 493
      • Publier les assets 494
      • Utiliser la console dans son navigateur 494
      • Prêts pour l'hébergement mutualisé 494
      • En résumé494
      • 26 Déployer son site Symfony en production 495
      • Préparer son application en local495
      • Vider le cache, tout le cache 495
      • Tester l'environnement de production 496
      • Soigner ses pages d'erreur 496
      • Installer une console sur navigateur 497
      • Vérifier la qualité de votre code 497
      • Vérifier la sécurité de vos dépendances 498
      • Vérifier et préparer le serveur de production499
      • Vérifier la compatibilité du serveur 499
      • Déployer votre application501
      • Méthode 1 : envoyer les fichiers sur le serveur par FTP 501
      • Méthode 2 : utiliser l'outil Capifony pour envoyer votre application 502
      • Les derniers préparatifs502
      • S'autoriser l'environnement de développement 503
      • Mettre en place la base de données 503
      • S'assurer que tout fonctionne 504
      • Avoir de belles URL 504
      • Et profitez ! 505
      • Les mises à jour de la base de données 506
      • Une checklist pour vos déploiements 506
      • En résumé507
      • Index 509

  • Origine de la notice:
    • FR-751131015
  • Disponible - 681.227 BAC

    Niveau 3 - Informatique