php bin/console server:run
composer require symfony/apache-pack
ça ajoute un htaccess dans le dossier public
https://symfony.com/doc/current/setup/web_server_configuration.html
php bin/console make:controller
edit .env
php bin/console doctrine:database:create
php bin/console make:entity
https://symfony.com/doc/current/doctrine.html
https://symfony.com/doc/master/bundles/DoctrineMigrationsBundle/index.html
https://symfony.com/doc/current/doctrine/associations.html
https://symfony.com/doc/master/bundles/DoctrineFixturesBundle/index.html
composer require --dev doctrine/doctrine-fixtures-bundle
creer DataFxitures/AppFixtures.php
php bin/console doctrine:fixtures:load
composer require fzaninotto/faker
composer require mbezhanov/faker-provider-collection
edit DataFxitures/AppFixtures.php
php bin/console doctrine:fixtures:load
php bin/console doctrine:query:sql 'SELECT * FROM recette'
https://symfony.com/doc/current/doctrine/common_extensions.html
composer require stof/doctrine-extensions-bundle
edit packages>stof_doctrine_extensions.yml
edit Entity/Recette.php Add * @Gedmo\Timestampable(on="create") and slug props
comment DataFxitures/AppFixtures.php setDateCreation
php bin/console doctrine:query:sql 'SELECT * FROM recette'
edit controller pour ajouter le findAll et le show
https://symfony.com/doc/current/doctrine.html#fetching-objects-from-the-database
edit templates/base pour rajouter bootstrap edit templates/default/index pour afficher chaque recette
https://twig.symfony.com/doc/2.x/tags/for.html
add {{ path('recette_show', {'slug': recette.slug}) }} https://symfony.com/doc/current/templating.html#linking-to-pages
composer require api
https://api-platform.com/docs/core/getting-started/
rajouter du mapping sur les entity
- @ApiResource
curl -X GET "http://127.0.0.1:8000/api/recettes" -H "accept: application/ld+json"
composer require --dev symfony/phpunit-bridge ./bin/phpunit
https://symfony.com/doc/current/testing.html
composer require --dev symfony/browser-kit symfony/css-selector
principe d'héritage avec twig : ajout d'un layout avec block body > main, override title
composer require symfony/swiftmailer-bundle symfony/form symfony/validator
https://symfony.com/doc/current/forms.html pour un + beau rendu
editer mailer conf in .env
gmail://username:password@localhost
SEND_TO=toto@gmail.com
https://symfony.com/doc/current/email.html
https://symfony.com/doc/current/logging.html
https://symfony.com/doc/current/logging.html
avec easy admin
composer require admin
Open the config/packages/easy_admin.yaml file and add the following configuration:
https://symfony.com/doc/master/bundles/EasyAdminBundle/book/your-first-backend.html
controler l'accès dans security.yaml : https://symfony.com/doc/current/security.html
- { path: ^/admin, roles: ROLE_ADMIN }
in_memory:
memory:
users:
ryan:
password: ryanpass
roles: 'ROLE_USER'
admin:
password: kitten
roles: 'ROLE_ADMIN'
on va scrapper marmitton on crée une "console command" https://symfony.com/doc/current/console.html
on la lance avec
php bin/console scrap:recette
on va avoir besoin d'un client pour aller récupérer des données "à l'extéieur"
composer require fabpot/goutte
on scrap en récupérant les champs de la page qui nous interesse
on inject doctrine pour persister les recettes
en bonus une progress bar https://symfony.com/doc/current/components/console/helpers/progressbar.html
on montre la photo de la recette si le champs img est renseigné
https://github.com/KnpLabs/KnpPaginatorBundle/blob/master/README.md
ajouter un fichier de config knp_paginator.yaml
nouvelle action dans le controlleur nouvelle vue twig un peu de bootstrap
tourne autour du design pattern : observer/observable et consumer producer https://symfony.com/doc/current/components/event_dispatcher.html
le but est de créer un système qui dit : j'ai réalisé tel tache, si quelqu'un a besoin de l'info, qu'il la prenne.
Je crée un evenement : AvisCreatedEvent Je crée un souscriveur d'evenement : avissubscriber que je declare dans service.yaml - il va envoyer un message à la personne qui a créé la recette en disant que quelqu'un a ajouter un commentaire dans la méthode du controller, après avoir enregistrer l'avis, je dis "j'ai enregistrer un avis"
on peut montrer dans le debugbar que sur la requete post, dans l'onglet event, on retrouve le notre