Démarrer un projet Symfony
Télécharger Symfony Installer
Télécharger le Symfony installer en exécutant cette commande :php -r "readfile('https://symfony.com/installer');" > symfony
Si une erreur comme celle-ci apparait :
cURL error 60: SSL certificate problem: unable to get local issuer certificate.
Faire :Télécharger ce fichier : https://curl.haxx.se/ca/cacert.pem
Mettre ce fichier dans un dossier pour qu'il y reste une longue période sans que personne n'y touche. A la racine de votre disque dur par exemple.
Dans le fichier php.ini, chercher les lignes suivantes et modifier les :
; Pour Linux et macOS
curl.cainfo = "/chemin/vers/cacert.pem"
; Pour Windows
curl.cainfo = "C:\chemin\vers\cacert.pem"
Créer un projet Symfony
Mettre le fichier symfony dans un dossier vide, puis créer un projet en exécutant la commande :php symfony new my_project_name
ou en précisant la version de Symfony souhaitée :
php symfony new my_project_name 2.8
Droits sous Linux
Sous Linux, il faut donner les droits à Symfony d'écrire dans les répertoires /app/cache/ et /app/logs/. Si vous ne donnez pas les droits, vous aurez cette belle erreur :[InvalidArgumentException]
The directory "/.../Symfony/app/cache/dev/annotations" is not writable
Pour donner ces droits, exécuter ces deux commandes :chmod 777 -R app/cache/
chmod 777 -R app/logs/
Supprimer le bundle par défaut
Supprimer le bundle par défaut en suivant les instructions de la documentation officielle.Ne pas oublier de supprimer les services importés qui étaient dans ce bundle dans
app/config/services.yml
.Ne pas oublier non plus dans
composer.json
, de remplacer :"autoload": {
"psr-4": {
"AppBundle\\": "src/AppBundle"
},
"classmap": [
"app/AppKernel.php",
"app/AppCache.php"
]
},
Par :
"autoload": {
"psr-0": {
"": "src/"
},
"classmap": [
"app/AppKernel.php",
"app/AppCache.php"
]
},
Puis d'exécuter composer dumpautoload
. (Source Autre source)Initialiser Git
git init
git add .
git commit -am "Initial commit - Cleaned Symfony project"
Installer les bundles incontournables
Doctrine-fixture-bundle
composer require --dev doctrine/doctrine-fixtures-bundle
Dans app/AppKernel.php
, rajouter la ligne :if (in_array($this->getEnvironment(), array('dev', 'test'))) {
$bundles = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle();
}
StofDoctrineExtensionsBundle (Sluggable)
composer require stof/doctrine-extensions-bundle
Dans app/AppKernel.php
, rajouter la ligne :$bundles = array(
// ...
new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
);
Et dans app/config/config.yml
, rajouter :# Stof\DoctrineExtensionsBundle configuration
stof_doctrine_extensions:
orm:
default:
sluggable: true
Créer un premier bundle
Suivre la documentation officielle.php bin/console generate:bundle
Puis suivre les instructions.Personnaliser les pages d'erreurs
Suivre la documentation officielle.Copier le dossier
vendor\symfony\symfony\src\Symfony\Bundle\TwigBundle\Resources\views
dans app\Resources\TwigBundle\
.La vue appelée en fonction du fichier demandé et du code d’erreur sera
error404.json.twig
ou error500.html.twig
par exemple. Si elle n’existe pas, la vue error.json.twig
ou error.xml.twig
sera appelée. Si elle n’existe pas, la vue error.html.twig
sera appelée.Insérer un fil d'Ariane
Je conseille ce fil d'Ariane simple d'utilisation et très bien expliqué.Quelques commandes utiles
Démarrer l'application Symfony
Attention, vous devrez préalablement démarrer votre base de données (WAMP/LAMP/MAMP pour les bases de données MySQL, MongoDB...)php bin/console server:run
Créer la base de données
php bin/console doctrine:database:create
Créer une entité
php bin/console generate:doctrine:entity
Puis suivre les instructions.Générer les getters/setters d'une entité
Pour générer les getters/setters d'une entité que vous avez modifié :php bin/console doctrine:generate:entities MyBundle:MyEntity
Lister vos routes
Pour voir toutes les routes que vous avez créées, cela peut être utile en cas de debug :php bin/console debug:router
Lister les namespace Twig
Pour afficher des informations de debug sur Twig, pour afficher la liste des namespace par exemple, si vous ne comprenez pas pourquoi un render() vous renvoi l'erreur "fichier introuvable" :php bin/console debug:twig
SourceOpérations CRUD
La documentation de Symfony indique clairement quelques exemples pour faire les opérations élémentaires (Create, Read, Update, Delete).Une erreur ? une question ? une critique ? une faute ? un conseil ? ou tout simplement un merci ?
Lâche ton commentaire
Lk Ssl Le mercredi 27 novembre 2019 à 17:32:56
Très bon tutoriel ;)
Je suis sur un serveur Linux externe équipé LAMP et pour accéder à ma page web Symfony depuis mon host, je lance cette commande dans mon server :
php bin/console server:run 0.0.0.0:8000
ps : si vous avez d'autres suggestions je suis preneur.
Très bon tutoriel ;)
Je suis sur un serveur Linux externe équipé LAMP et pour accéder à ma page web Symfony depuis mon host, je lance cette commande dans mon server :
php bin/console server:run 0.0.0.0:8000
ps : si vous avez d'autres suggestions je suis preneur.
David Le jeudi 28 novembre 2019 à 10:39:38
Salut,
en effet, quand on lance "php bin/console server:run", il utilise par défaut l'adresse "localhost" et le premier port de disponible à partir du port 8000, donc cela revient au même dans certains cas.
Ce n'est pas une suggestion mais une information, tu peux aussi utiliser les commandes "php bin/console server:start" et "php bin/console server:stop" pour lancer/arrêter le serveur sans que cela bloque ta fenêtre de commande.
Salut,
en effet, quand on lance "php bin/console server:run", il utilise par défaut l'adresse "localhost" et le premier port de disponible à partir du port 8000, donc cela revient au même dans certains cas.
Ce n'est pas une suggestion mais une information, tu peux aussi utiliser les commandes "php bin/console server:start" et "php bin/console server:stop" pour lancer/arrêter le serveur sans que cela bloque ta fenêtre de commande.