Symfony - Ce que j'aurais aimé savoir plus tôt, partie 2
Si vous ne l'avez pas encore lu, il existe un premier épisode de cette série d'articles.
HTTP Client - Scoping client
La clé de configuration framework.http_client.scoped_clients
permet de définir et de configurer des endpoints que vous requêtez régulièrement.
L'avantage est d'obtenir des services déjà configurés.
On se concentre sur les spécificités de la requête uniquement.
# config/packages/framework.yaml
framework:
# ...
http_client:
scoped_clients:
gitlab:
base_uri: '%env(resolve:GITLAB_ENDPOINT)%'
headers:
Private-Token: '%env(resolve:GITLAB_TOKEN)%'
# ...
use Symfony\Contracts\HttpClient\HttpClientInterface;
# ...
public function __construct(
private HttpClientInterface $gitlab,
) {
}
public function doSomething() {
$this->gitlab->request('GET', '/users');
}
# ...
https://symfony.com/doc/6.0/http_client.html#scoping-client
PHPStorm - Logs
Je suis tombé sur l'article "A quick way to browse Symfony Logs with PHPStorm", publié dans la série A week of Symfony. Il est possible de paramétrer le formatage des logs Symfony sur PHPStorm. Cela permet notamment de faire ressortir certains "types" de logs.
Je n'ai pas réussi à le faire fonctionner tel que rédigé dans l'article. En revanche, celui-ci relaie le repository dszczer/ideolog-symfony-format en guise de cheahsheet qui contient un "message pattern" différent, qui lui fonctionne pour ma part.
Forms - Actions Methods
Il est possible de surcharger la méthode HTTP d'un formulaire (par défaut POST
) directement dans twig.
{# templates/task/new.html.twig #}
{{ form_start(form, {'action': path('target_route'), 'method': 'DELETE'}) }}
https://symfony.com/doc/6.0/forms.html#changing-the-action-and-http-method
VarDumper - ctrl/cmd
La combinaison ctrl/cmd + clic
permet d'agrandir et de réduire tous les enfants issus d'un dump()
sur le rendu HTML.
Doctrine - findOneBySlug
find()
, findBy()
, findOneBy()
et findAll()
ne sont pas les seuls finders disponibles par défaut avec Doctrine.
L'EntityRepository fournit des "magic finders".
Par exemple, si votre entité possède une propriété nickname
, vous pouvez écrire ceci:
$user = $userRepository->findOneBy(['nickname' => 'romanb']);
// __call magic
$user = $userRepository->findOneByNickname('romanb');
Console - bin/console about
Il existe une commande bin/console about
qui donne de nombreuses informations sur l'environnement en cours (version symfony et php, le charset du kernel...).
Flex - Force recipes synchronisation
Il peut parfois être nécessaire de "re-synchroniser" son symfony.lock
.
La commande composer sync-recipes --force
peut vous aider à cela.
https://symfony.com/blog/new-in-symfony-flex-1-2
Vous en voulez plus ? Il existe un article dans le même ADN que ma série, https://locastic.com/blog/symfony-tips-and-tricks/.