
Voyons ce que nous allons faire !
Je met à votre disposition le code source final :-)
Petite révision pour partir sur de bonnes base !
Au menu :
Composer https://getcomposer.org/ https://connect.adfab.fr/outils/quest-ce-composer
MVC https://www.youtube.com/watch?v=TfH3tcTVwfY
Le principe des interfaces
Les namespaces https://www.supinfo.com/articles/single/1812-utilisation-namespaces-php
Injection de dépendance https://fr.wikipedia.org/wiki/Injection_de_d%C3%A9pendances
TypeHint
Annotations
PSR https://blog.nicolashachet.com/technologies/php/quest-ce-que-les-recommandations-psr/
Liens utiles :
https://symfony.com/blog/the-end-of-the-symfony-standard-edition
https://stackoverflow.com/questions/48505920/symfony-skeleton-and-symfony-website-skeleton/48508308#48508308
Liens utiles :
slack officiel de l'Afsy http://slack.afsy.fr/
slack officiel de Symfony https://symfony.com/slack-invite
https://stackoverflow.com
https://openclassrooms.com/forum/categorie/php
Liens utiles :
https://symfony.com/doc/current/setup.html
Liens utiles :
https://medium.com/@smaine.milianni/straightforward-symfony-4-best-practices-e6d1b3c0a9dd
https://kgaut.net/blog/2017/composer-composerlock-vendor-et-versioning-sont-dans-un-bateau.html
Liens utiles :
https://symfony.com/doc/current/introduction/http_fundamentals.html
Nous allons créer notre premier Controller pour afficher le traditionnel "Hello World" et voir comment passer un récupérer un paramètre depuis l'url.
Liens utiles :
https://symfony.com/doc/current/routing.html#creating-routes
Liens utiles :
https://symfony.com/doc/current/routing/requirements.html
Liens utiles :
https://twig.symfony.com/
Liens utiles :
https://twig.symfony.com/doc/2.x/functions/block.html
Utilisation de TWIG, affichages de variable, syntaxe, boucle, conditions...
Créer une variable : {% set my_var = 'variable' %}
Afficher une variable : {{ my_var }}
Parcourir un tableau :
{% for index in my_array %}
{{ index }}
{% endfor %}
Condition :
{% if var == 'symfony' %}
{{ var }}
{% endif %}
Créer un lien : <a href="{{ path('my_route', {parameter: object.id}) }}">mon lien</a>
Appeler un fichier js/css/images dans le dossier public : {{ asset('chemin_jusquau_fichier') }}
Commenter : {# my comment #}
Fonctions native : https://twig.symfony.com/doc/2.x/
Utiliser TWIG pour créer des liens et naviguer d'une page à une autre
Mise en place du style ;-)
Nous allons voir ce qu'est Doctrine
Création d’une base de donnée et d’une entité
https://symfony.com/doc/current/doctrine.html
https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/basic-mapping.html#basic-mapping
Nous allons faire un CRUD avec Doctrine.
Create = Créer
Read = Lire
Update = Modifier
Delete = Supprimer
Création d’un formulaire pour enregistrer un objet en base de données
https://symfony.com/doc/current/forms.html
https://symfony.com/doc/current/forms.html#built-in-field-types
Nous allons voir comment valider un formulaire et être sûr que les données soumises par le visiteur sont correctes
https://symfony.com/doc/current/validation.html
Nous allons voir comment éditer notre entité Car en utilisant un FormType
Tour d'horizon des différentes relations possible entre entités
Mise en place d'une relation OneToOne et upload d'une image
https://symfony.com/doc/current/doctrine.html
https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/basic-mapping.html#basic-mapping
Mise en place d'une relation ManyToOne bidirectionnelle
https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/association-mapping.html#one-to-many-bidirectional
Gestion d'une relation ManyToOne bidirectionnelle à travers un formulaire Symfony
https://symfony.com/doc/current/reference/forms/types/collection.html
https://symfony.com/doc/current/reference/forms/types/collection.html#adding-and-removing-items
Découverte et création de données fictives qu'on appelle communément "Fixtures"
https://github.com/hautelook/AliceBundle#alicebundle
Mise en place d'une relation ManyToMany via des fixtures
https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/association-mapping.html#many-to-many-bidirectional
Mise en place d'une relation ManyToMany via les formulaires Symfony
https://symfony.com/doc/current/reference/forms/types/entity.html
Découverte des méthodes Doctrine FindBy
https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/working-with-objects.html#by-simple-conditions
Optimisation de nos fixtures et mise en place de "Provider"
https://github.com/hautelook/AliceBundle/blob/master/doc/faker-providers.md
TP : Mise en place d'une barre de recherche et pour cela nous allons créer une requête custom dans notre repository
Definition des Services dans Symfony
https://symfony.com/doc/current/service_container.html
Découverte des services avec Symfony 4
https://symfony.com/doc/current/service_container/3.3-di-changes.html
Mise en place d'un service avec Symfony pour gérer l'upload d'Image
Introduction aux Events avec Symfony
https://symfony.com/doc/current/event_dispatcher.html
Mettre notre site en maintenance grace à l'Event Kernel.Response
Gérer l'upload de notre Image via un Event doctrine
https://symfony.com/doc/current/doctrine/lifecycle_callbacks.html
Gestion de l'édition de notre image et de l'upload de celle-ci
Mise en place d'une requête Ajax avec Symfony et gestion de la suppression de l'entité Keyword dans le formulaire d'ajout de Car
Découverte du framework Symfony et de ses bonnes pratiques, nous allons créer un site de location de véhicule avec un back-office pour les utilisateurs et les administrateurs du site.
Nous verrons les composants Symfony, la création de page, la manipulation de donnés, la sécurité, la gestion des formulaires, Doctrine, Twig,la mise en place de tests unitaire et fonctionnels, la mise en place d'évènements et la création de service, l'envoi de mail, l'inscription/connexion d'un utilisateur via la confirmation a travers un email