Console
La console de l'application est le programme situé dans bin/console. Il est construit à partir du composant Console et fournit des commandes très utiles lors du développement.
Listez les commandes disponibles:
php bin/console
[output]Symfony 5.4.18 (env: dev, debug: true) #StandWithUkraine https://sf.to/ukraine
[output]...
[output] secrets:set Set a secret in the vault
Exécutons quelques commandes pour rappeler ce que nous avons vu jusqu'ici.
Symfony n'utilise pas de système de pages mais des routes. Listez les routes actuellement configurées:
php bin/console debug:router
[output] ---------------------- ------------- ------------- -------- --------------------------------------
[output] Name Method Scheme Host Path
[output] ---------------------- ------------- ------------- -------- --------------------------------------
[output] _preview_error ANY ANY ANY /_error/{code}.{_format}
[output] ---------------------- ------------- ------------- -------- --------------------------------------
Les bundles sont configurés en YAML. Dans les fichiers de configuration, la clé de premier niveau désigne le bundle concerné. Afficher la configuration courante pour framework.router
:
php bin/console debug:config framework router
[output]
[output]Current configuration for "framework.router"
[output]============================================
[output]
[output]resource: 'kernel::loadRoutes'
[output]type: service
[output]enabled: true
[output]utf8: true
[output]default_uri: null
[output]http_port: 80
[output]https_port: 443
[output]strict_requirements: true
Le conteneur de services contient des services organisés par identifiant. Afficher les informations du service App\Kernel
:
php bin/console debug:container App\Kernel
[output]
[output] // This service is a public alias for the service kernel
[output]
[output]Information for Service "kernel"
[output]================================
[output]
[output] ----------------------- ------------------------------
[output] Option Value
[output] ----------------------- ------------------------------
[output] Service ID kernel
[output] Class App\Kernel
[output] Tags controller.service_arguments
[output] routing.route_loader
[output] Public yes
[output] Synthetic yes
[output] Lazy no
[output] Shared yes
[output] Abstract no
[output] Autowired no
[output] Autoconfigured yes
[output] ----------------------- ------------------------------
MakerBundle & Twig
Installons 2 nouvelles dépendances:
- le MakerBundle qui ajoute des commandes
make:*
à la console pour facilement générer des classes (controlleurs, formulaires, ...) - Twig qui est un moteur de template avec sa propre syntaxe. À utiliser pour nos templates HTML.
Installez les 2 dépendances avec les commandes suivantes:
composer require twig
[output] ...
[output]Symfony operations: 2 recipes (dddc29b27ac1fb88c4d6309a97dc55f3)
[output] - Configuring symfony/twig-bundle (>=5.4): From github.com/symfony/recipes:main
[output] - Configuring twig/extra-bundle (>=v3.5.0): From auto-generated recipe
[output]Unpacking Symfony packs
[output] - Unpacked symfony/twig-pack
[output]Loading composer repositories with package information
[output]Updating dependencies
[output]Nothing to modify in lock file
[output]Installing dependencies from lock file (including require-dev)
[output]Package operations: 0 installs, 0 updates, 1 removal
[output] - Removing symfony/twig-pack (v1.0.1)
[output] ...
composer req maker --dev
[output] ...
[output]Symfony operations: 1 recipe (5f3944ed353e6b356fc4c281b207010f)
[output] - Configuring symfony/maker-bundle (>=1.0): From github.com/symfony/recipes:main
[output] ...
D'après ce qu'affiche la commande, quels mécanismes de Symfony Flex ont été exécutés ?
- les alias:
twig
correspond àsymfony/twig-pack
etmaker
àsymfony/maker-bundle
. - l'unpacking (désempaquetage): le package
symfony/twig-pack
a été supprimé du composer.json et remplacé par les 3 packages qu'il contenait. - les recipes: une recipes a été exécutée pour chacun des 3 bundles installés.
Symfony Flex a donc enregistré ces 3 bundles dans symfony.lock, les a activés dans /config/bundles.php et en ce qui concerne Twig, la recipe a ajouté le fichier de configuration /config/packages/twig.yaml et un dossier /templates/.
Les bundles étant activés, ils sont "branchés" à l'application par le conteneur de services. Concernant le MakerBundle, il a ajouté des commandes à la console:
php bin/console
[output] ...
[output] make
[output] make:auth Creates a Guard authenticator of different flavors
[output] make:command Creates a new console command class
[output] make:controller Creates a new controller class
[output] make:crud Creates CRUD for Doctrine entity class
[output] make:docker:database Adds a database container to your docker-compose.yaml file
[output] make:entity Creates or updates a Doctrine entity class, and optionally an API Platform resource
[output] make:fixtures Creates a new class to load Doctrine fixtures
[output] make:form Creates a new form class
[output] make:message Creates a new message and handler
[output] make:messenger-middleware Creates a new messenger middleware
[output] make:migration Creates a new migration based on database changes
[output] make:registration-form Creates a new registration form system
[output] make:reset-password Create controller, entity, and repositories for use with symfonycasts/reset-password-bundle
[output] make:serializer:encoder Creates a new serializer encoder class
[output] make:serializer:normalizer Creates a new serializer normalizer class
[output] make:stimulus-controller Creates a new Stimulus controller
[output] make:subscriber Creates a new event subscriber class
[output] make:test [make:unit-test|make:functional-test] Creates a new test class
[output] make:twig-component Creates a twig (or live) component
[output] make:twig-extension Creates a new Twig extension with its runtime class
[output] make:user Creates a new security user class
[output] make:validator Creates a new validator and constraint class
[output] make:voter Creates a new security voter class
[output] ...