Console
Liste des commandes disponibles
bin/console
Conteneur de services
bin/console debug:autowiring
Cela liste les interfaces disponibles.
Pour en rechercher une concernant un sujet (ex: cache, mail, markdown)
bin/console debug:autowiring markdown
Pour voir toutes les implémentations de ces interfaces
bin/console debug:container
Ou pour avoir le détail sur l'une d'entre elles (ex: markdown)
bin/console debug:container markdown
Pourvoir les paramètres présents dans le conteneur
bin/console debug:container markdown
Configuration
bin/console debug:container --parameters
Cela liste toutes la configuration par défaut pour le bundle.
Pour voir la config actuelle
bin/console debug:config MyBundle
Liste des routes et de leur contrôleur
bin/console debug:router --show-controllers
Affiche la liste de toutes les routes et les contrôleurs/actions associés :
Création auto
La commande make permet de générer un squelette de classe
(Command, TwigExtension, ...) :
bin/console make
Dump
dump($someVariable);
Pour afficher une variable et stopper l'exécution :
// "Dump and Die"
dd($someVariable);
Twig
Pour afficher toute la syntaxe ainsi que les variables globales disponibles dans Twig :
bin/console debug:twig
Injection de dépendances
Argument binding via services.yaml
La section _default est héritée par toutes les déclarations suivantes.
C'est pourquoi si on y utilise bind pour binder des arguments, ils seront
disponibles pour tous les services.
On peut typer ces arguments. Ex:
services:
_default:
bind:
bool $isDebug: '%kernel.debug%'
Psr\Log\LoggerInterface $someLogger: '@monolog.logger.some_logger'
Quand il y a plusieurs implémentations d'une interface
(par exemple LoggerInterface, cf.bin/console debug:autowiring log), on peut
accéder à celui que l'on veut en nommant l'argument comme indiqué.
Ex:
public function __constructor(LoggerInterface $consoleLogger) {}
// à la la place de
public function __constructor(LoggerInterface $logger) {}
Alias de service
Un alias de service peut être créé en une ligne :
services:
Some\Path\To\SomeService $newName: '@id_of_the_target_service'
Logging
Monolog peut loguer des messages sur des channel spécifiques. Pour cela il faut :
- Déclarer ce nouveau channel
# ex: dans monolog.yaml
monolog:
channels: ['my_new_channel']
- Utiliser le nouveau service référencé par Monolog
(cf.
bin/console debug:autowiring log)
public function __constructor(LoggerInterface $myNewChannelLogger) {}
Bundles sympas
StofDoctrineExtensionsBundle
Ajoute des extensions doctrine (Slug, Blameable, Softdeleteable, ...)
KnpTimeBundle
Ajoute le filter twig ago, pour afficher depuis quand la date est passée.
Foundry
Ajoute une commande Symfony (make:factory) pour générer des Factory pour les entités.
Compatible avec le bundle ci-dessous
FakerBundle
Permet de générer du faux contenu de manière intelligente.