From a130fab2f8fbaa919b4ec8be292ce8fbf95d0aaa Mon Sep 17 00:00:00 2001 From: William Petit Date: Thu, 14 Dec 2017 22:14:18 +0100 Subject: [PATCH] =?UTF-8?q?Remise=20=C3=A0=20niveau=20Symfony3:=20slides?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- developpement/symfony3/presentation/slides.md | 88 +++++++++++++++++-- 1 file changed, 83 insertions(+), 5 deletions(-) diff --git a/developpement/symfony3/presentation/slides.md b/developpement/symfony3/presentation/slides.md index a5f9b40..d6bc129 100644 --- a/developpement/symfony3/presentation/slides.md +++ b/developpement/symfony3/presentation/slides.md @@ -1,4 +1,4 @@ - + # Remise à niveau Symfony3 ## William Petit - S.C.O.P. Cadoles @@ -939,6 +939,14 @@ class Comment ``` --- +## Exercice: relation `many to many` + +Créer une entité "SocialUser" ayant un attribut "friends" qui est une collection de "SocialUser". + +Tester l'ajout de relation et vérifier que la relation est bien bidirectionnelle comme on le souhaiterait dans le cas de la conception d'un réseau social. + +--- + ## Les évènements Doctrine et Symfony (1) ### Création du `Listener` @@ -1040,6 +1048,14 @@ services: --- +## Création et traitement de formulaires (4) + +### Événements et formulaires dynamiques + +Source: https://symfony.com/doc/current/form/events.html + +--- + ## Validation des données (1) ### Installer le composant `validator` @@ -1068,7 +1084,7 @@ class MyEntity public $name; } ``` -Les différentes validations pré-existantes: `NotBlank`, `Blank`, `NotNull`, `IsNull`, `isTrue`, `IsFalse`, `Email`, `Url`... +Les différentes validations pré-existantes: `NotBlank`, `Blank`, `NotNull`, `IsNull`, `IsTrue`, `IsFalse`, `Email`, `Url`... Voir http://symfony.com/doc/3.4/validation.html#supported-constraints @@ -1101,13 +1117,75 @@ if ( count($errors) > 0 ) { # Mise en production -## Gestion des environnements -## Cache applicatif +## Configuration de Nginx +## Déploiement --- -## Gestion des environnements +## Configuration de Nginx +``` +server { + + server_name myapp.fr www.myapp.fr; + root /var/www/myapp/web; + + location / { + try_files $uri /app.php$is_args$args; + } + + location ~ ^/app\.php(/|$) { + fastcgi_pass unix:/var/run/php7.1-fpm.sock; + fastcgi_split_path_info ^(.+\.php)(/.*)$; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; + fastcgi_param DOCUMENT_ROOT $realpath_root; + # Permet d'empecher les URL du type "http://myapp/index.php/sub-path" + internal; + } + location ~ \.php$ { + return 404; + } + + error_log /var/log/nginx/myapp.log; + access_log /var/log/nginx/myapp.log; +} +``` + +--- + +## Déploiement de l'application + +### Checklist après le déploiement d'une nouvelle version + +1. Vérifier que l'environnement est viable + ```bash + php bin/symfony_requirements + ``` +2. Optimisation de l'autoloader `composer` + ```bash + export SYMFONY_ENV=prod + composer install \ + --no-dev \ + --optimize-autoloader \ + --classmap-authoritative + ``` +3. Nettoyer/réamorcer le cache applicatif + ```bash + bin/console cache:clear --env=prod --no-debug --no-warmup + bin/console cache:warmup --env=prod + ``` +4. (Au besoin) Générer les assets via assetic + ```bash + bin/console assetic:dump --env=prod --no-debug + ``` +--- + + +5. S'assurer que la configuration de Doctrine est viable + ```bash + bin/console doctrine:ensure-production-settings + ``` --- # Licence