Symfony 5
Fiche d'aides
Composer
# Installe les dépendances nescessaire pour faire
# fonctionner un projet symfony
# ATTENTION: Si il y a un problème vous pouvez supprimer
# le fichier "composer.lock" et relancer la commande.
composer install
# Install une librairie externe, un bundle ou
# un "package" flex
composer require <nom_du_paquet>Symfony Server
# Lance un server de dévelopement
symfony server:start
# Lance un server de dévelopement sur un
# port prédéfinie
symfony server:start --port=4444
# Lance un server de dévelopement en
# tache d'arrière plan
symfony server:start -d
# Affiche si un server est actuellement
# en route
symfony server:status
# Stop un server symfony
symfony server:stopSymfony Console
# Affiche toute les commandes disponible dans
# la console symfony
symfony console
# Affiche l'aide d'une commande
symfony console help <nom_de_la_commande>Symfony Console: Doctrine
# Créer la base de données
symfony console doctrine:database:create
# Supprime la base de données
symfony console doctrine:database:drop --force
# Créé le shéma de la base de données (les tables et
# les colones)
symfony console doctrine:schema:create
# Met à jour le schéma de la base de données
symfony console doctrine:schema:update --force
# Charge les "fixtures" (données fictive) dans la
# base de données
symfony console doctrine:fixtures:loadSymfony Console: Debug
# Affiche la liste de toutes les routes
# de l'application
symfony console debug:router
# Affiche toutes les informations d'une route
symfony console debug:router <nom_de_la_route>Symfony Console: Make
# Crée un nouveau controller
symfony console make:controller <nom_du_controller>
# Crée une nouvelle entité doctrine et
# son repository
symfony console make:entity <nom_de_lentity>
# Crée un nouveau formulaire
symfony console make:form <nom_du_formulaire>
# Créé une nouvelle class d'utilisateur
symfony console make:user
# Créé un system d'authentification
symfony console make:authController
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class ExampleController extends AbstractController
{
/**
* @Route("/example", name="app_example_hello")
*/
public function hello(Request $request, string $name): Response
{
$name = $request->query->get('name', 'Inconnue');
return new Response("Hello $name");
}
}
Controller
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class ExampleController extends AbstractController
{
/**
* @Route("/example", name="app_example_hello")
*/
public function hello(Request $request): Response
{
$name = $request->query->get('name', 'Inconnue');
return new Response("Hello $name");
}
}
Hérite de AbstractController: permet d'utiliser les méthodes de base
Controller
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class ExampleController extends AbstractController
{
#[Route('/hello', name: 'app_example_hello')]
public function hello(Request $request): Response
{
$name = $request->query->get('name', 'Inconnue');
return new Response("Hello $name");
}
}
Attache une route
Controller
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class ExampleController extends AbstractController
{
/**
* @Route("/example", name="app_example_hello")
*/
public function hello(Request $request): Response
{
$name = $request->query->get('name', 'Inconnue');
return new Response("Hello $name");
}
}
Injécte la Request et retourne toujours une Response
Controller
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class ExampleController extends AbstractController
{
/**
* @Route("/example", name="app_example_hello")
*/
public function hello(Request $request): Response
{
$name = $request->query->get('name', 'Inconnue');
return new Response("Hello $name");
}
}
Récupére "name" depuis les queries de l'url
Controller & Request
/**
* @Route("/example", name="app_example_hello")
*/
public function hello(Request $request): Response
{
$name = $request->query->get('name', 'Inconnue');
$request->request->get('name');
$request->isMethod('POST');
return new Response("Hello $name");
}Récupére "name" depuis les queries de l'url
Controller & Request
/**
* @Route("/example", name="app_example_hello")
*/
public function hello(Request $request): Response
{
$name = $request->query->get('name', 'Inconnue');
$request->request->get('name');
$request->isMethod('POST');
return new Response("Hello $name");
}Récupére "name" depuis les données POST
Controller & Request
/**
* @Route("/example", name="app_example_hello")
*/
public function hello(Request $request): Response
{
$name = $request->query->get('name', 'Inconnue');
$request->request->get('name');
$request->isMethod('POST');
return new Response("Hello $name");
}Test la méthode HTTP (l'envoie d'un formulaire)
Controller
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class ExampleController extends AbstractController
{
/**
* @Route("/example", name="app_example_hello")
*/
public function hello(Request $request): Response
{
$name = $request->query->get('name', 'Inconnue');
return new Response("Hello $name");
}
}
Retourne une Response
Controller: Template & Redirect
// Retourne une réponse avec le contenue du template
// twig
return $this->render('nom_du_controller/nom_de_la_methode.html.twig', [
'variable1' => 'valeur',
]);
// Redirige vers une autre route
return $this->redirectToRoute('nom_de_la_route', [
'variable_de_la_route' => 'valeur',
]);Controller: Doctrine
// Pour obtenir un repository l'injecter en paramètre du controller.
// et pour le manager utiliser : EntityManagerInterface
// Récupére toute les entité d'un repository
$entities = $repository->findAll();
// Récupére l'entité avec l'id 1
$entity = $repository->find(1);
// Sauvegarde une entité en base de données
$manager->persist($entity);
$manager->flush()
// Supprime une entité en base de données
$manager->remove($entity);
$manager->flush();Controller: Form
// Créé un nouveau formulaire
$form = $this->createForm(NomDuType::class);
# Créé un nouveau formulaire préremplie
$form = $this->createForm(NomDuType::class, $entity);
# Remplie le formulaire avec les données
# de la requète
$form->handleRequest($request);
# Vérifie si le formulaire a bien était
# envoyé
$form->isSubmitted();
# Vérifie si le formulaire est valide
$form->isValid();
# Récupére les données de notre formulaire
$form->getData();
# Créé la "Vue" de notre formulaire pour twig
$formView = $form->createView();FormType
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ExampleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nom_du_champ', TextType::class, [
'label' => 'Mon label'
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => MonEntity::class,
]);
}
}
FormType
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ExampleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nom_du_champ', TextType::class, [
'label' => 'Mon label'
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => MonEntity::class,
]);
}
}
Hérite de AbstractType
FormType
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ExampleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nom_du_champ', TextType::class, [
'label' => 'Mon label'
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => MonEntity::class,
]);
}
}
Contient 2 méthodes
FormType
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ExampleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nom_du_champ', TextType::class, [
'label' => 'Mon label'
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => MonEntity::class,
]);
}
}
Configure les champs du formulaire
FormType
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ExampleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nom_du_champ', TextType::class, [
'label' => 'Mon label'
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => MonEntity::class,
]);
}
}
Configure les options du formulaire
FormType
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ExampleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nom_du_champ', TextType::class, [
'label' => 'Mon label'
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => MonEntity::class,
]);
}
}
Définie l'objet PHP que le formulaire doit remplir. Nous pouvons le récupérer avec $form->getData();
FormType
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ExampleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nom_du_champ', TextType::class, [
'label' => 'Mon label'
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => MonEntity::class,
]);
}
}
Ajoute des champs
Twig
{# Affiche une variable #}
{{ nom_de_la_variable }}
{# Condition #}
{% if some_variable > 10 %}
<p>Vous avec plus de 10 ans</p>
{% endif %}
{# Boucle #}
{% for element in tableaux %}
{% endfor %}
{# Inclure un template #}
{{ include('chemin/_de_mon_template.html.twig') }}Twig & Routing
{# Génére le lien relatif d'une route #}
{{ path('nom_de_la_route') }}
{# Génére l'url complet d'une route #}
{{ url('nom_de_la_route') }}Twig & Form
{# Affiche l'intégralité d'un formulaire #}
{{ form(formView) }}
{# affiche seulement la balise ouvrante d'un formulaire #}
{{ form_start(formView) }}
{# affiche le label d'un champ #}
{{ form_label(formView.nomDuChamp) }}
{# affiche les erreurs d'un champ #}
{{ form_errors(formView.nomDuChamp) }}
{# Affiche le widget d'un champ #}
{{ form_widget(formView.nomDuChamp) }}
{# Affiche l'aide d'un champ #}
{{ form_help(formView.nomDuChamp) }}
{#
Affiche l'aide, le label, les erreurs et le widget
d'un champ
#}
{{ form_row(formView.nomDuChamp) }}
{# Affiche le reste du formulaire #}
{{ form_rest(forwView) }}
{# Affiche la balise fermante d'un formulaire #}
{{ form_end(formView) }}Twig Héritage
{# Dans base.html.twig #}
Symfony 5 - Fiche d'aide
By David Jegat
Symfony 5 - Fiche d'aide
- 412