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