Au cours de ce tutoriel vous allez donc apprendre à mettre en place un environnement de développement symfony2 puis à créer votre première application mettant en scène :
Vous êtes confortablement installé dans votre canapé, prêt à faire votre première rencontre avec symfony2 ? C’est partit, suvez le guide !
Pour les petits curieux où pour ceux qui ne savent pas quel logiciel utiliser pour bien aborder ce tutoriel, voici un rapide descriptif de mon environnement de travail.
Au cours de ce tutorial, nous allons nous lancer dans la création d’une application simpliste pour vous montrer les différents points clés à connaître quant à la mise en place d’une application en Symfony2. Nous allons pour cela créer une vidéothèque pas à pas, de la création du bundle à la page d’administration des films.
Vous pouvez télécharger l’archive du projet en cliquant sur le lien suivant : Archive du projet. Gardez à l’esprit que ce tutorial devrais vous permettre d‘écrire vous même votre application, cette archive vous servira uniquement si vous vous apercevez que quelque chose de fonctionne pas comme voulu.
Voila mes petits loulous, si vous avez des remarques ou des questions, n'hésitez pas à m'en faire part !
Merci pour ton super tutoriel, pour le moment je n'en suis qu'à la troisième partie (et tout fonctionne!) mais j'ai deux remarques qui pourront aider les autres :
-lorsque l'on doit télécharger le package symfony il faut bien préciser que l'on va télécharger la version 2 en bêta.
-A la troisième partie : suppression des données de la démo tu dis qu'il faut supprimer le dossier suivant : On supprime le dossier “videotheque/web/acmedemo”, or je n'ai pas trouvé ce dossier mais plutôt celui-ci : “videotheque/web/bundles/acmedemo”
Voili voilou c'est tout pour le moment. Merci encore ;)
Bien vu, merci à toi, j'ai apporté les corrections du coup !
Bone continuation sur symfony2 :)
Merci beaucoup pour l'excellent tutoriel. Si vous le souhaitez, je serais heureux de le traduire en anglais (je suis un locuteur natif). Je vais travailler à chaque étape avec Beta 4 (qui est arrivée le 6 Juin). Je vais vous laisser savoir si quelque chose est affectée par le changement à la Beta 4. Merci encore.
Evidemment, je serais très content si vous pouviez faire une traduction ! Je ne me suis pas lancé encore vu mon anglais assez ... mmm ... rudimentaire ! :D
Si vous voulez la version texte du tutorial, qui sera bien plus simple à traduire, vous pouvez me contacter à l'adresse suivante : gilles.h@iabsis.com.
Je vais télécharger la nouvelle beta pour tester si tout fonctionne correctement :).
Merci !
Bonjour !
Je viens tout juste de tomber sur ton tutoriel qui m'a l'air très complet ! moi qui voulait jeter un oeil à Symfony 2 (n'ayant pas fait énormément de symfony, mais adorant Doctrine), je vous en remercie !
Il est un peu tard pour se lancer dans ce tuto mais j'attaquerai ca rapidement et vous ferai des retours par commentaire quand j'aurai bien avancé ! huhu merci beaucoup !
Léo
Moi j'ai eu un petit problème pour le fichier routing.yml qu'il fallais modifier.
J'ai réglé ce problème en modifier routing_dev.yml à la place de routing.yml
Merci pour ce magnifique tuto :D
Une remarque pour ton schéma de base de donnée tu indique une table assoc_film_genre.
Je trouve ça vraiment inutile, autant rajouter un champ id_genre dans la table Film, non ?
Merci beaucoup pour ce super tutorial.
Un petit probleme cependant lors de l'edition du routing.yml. Si vous avez des erreur comme quoi Acme n'est pas trouvé, modifiez le fichier routing_dev.yml et enlevez tout ce qui touche a Acme...
Voila voila ! Encore merci pour cet excellent tutorial !
Coucou tout le monde et merci pour les commentaires !
@olitron, si tu regardes un peu le mockup tu peux voir que l'idée c'est de pouvoir associer plusieurs genres à un même film, d'où l'association multiple :-)
@akiat : effectivement quelques changements ont été apportés à la dernière beta de symphony et je n'ai pas encore eut le temps de les reportés dans le tuto, beaucoup de boulot, je vais essayer de faire les corrections necesaires encore ce week rend :-)
Merci pour ta réponse :)
Voici un autre problème que je n'ai pour l'instant pas résolu:
/**
* @orm:Entity
*/
La synthaxe a changé, j'ai lu que les " : " se transformait en " \ " mais ca ne marche toujours pas pour moi... Aurait tu une idee ? L'erreur est lors de la commande:
php app/console doctrine:generate:entities AkiatVideothequeBundle
Le message d'erreur est le suivant:
Generating entities for bundle "AkiatVideothequeBundle"
[Doctrine\Common\Annotations\AnnotationException]
[Semantical Error] The annotation "@orm\Entity" in class Akiat\VideothequeBundle\Entity\Film was never imported.
doctrine:generate:entities [--path="..."] [--no-backup] name
Lien: http://www.developpez.net/forums/d1034689-3/php/bibliotheques-frameworks/symfony2/version-evolutions-beta/#post6005399
Bonne journée !
Désolé de spammer mais y'a t-il une raison particulière de ne pas décrire les table en YAML ? Ou est-ce juste une question de gout ?
Le YML est plus lisible non ?
Pour ce qui est de la description des tables, oui c'est une question de gout, il y a la possibilité de le faire en YML. Moi personnellement j'aime bien le format PHP, et il semble que ce soit celui qui est le plus utilisé ça et là.
Sinon pour ce qui est de Doctrine, oui, il y a eut un changement depuis la dernière beta. Matt me l'a d'ailleurs signalé par mail.
1 - La balise Doctrine passe de "@orm:" à "@ORM\".
2 - Il faut maintenant inclure le namespace "use Doctrine\ORM\Mapping as ORM;" dans chaque fichier utilisant les annotations ORM (Genre.php, Film.php, ...).
J'avais effectivement essayer comme cela, mais malgré le " use Doctrine\ORM\Mapping as ORM; " et le changement de orm: a ORM\ cela me met toujours la même erreur...
Alors je vais télécharger la dernière beta pour tester tout ça et apporter les corrections nécessaires au tuto.
Vivement la version finale ! :P
C'est régler, j'avais include le use Doctrine\ORM\Mapping as ORM;
avant le namespace...
Sorry pour le dérangement :)
salut merci pour ce Tuto mé j'ai un probléme dans le fichier src\Iabsis\videothequeBundle\IabsisvideothequeBundle.php on line 3
donc l'erreur est :
Parse error: syntax error, unexpected '}', expecting T_NS_SEPARATOR in ..\src\Iabsis\videothequeBundle\IabsisvideothequeBundle.php on line 3 :( et merci
Euh... super bien expliqué ! merci encore pour le tuto !!
Par contre, moi la console me dit : app n'est pas reconnu en tant que commande blablabla...
Comment on fait dans ce cas ?
@Incs
Vérifie que c'est bien cette commande que tu exécute et ce depuis la racine de ton projet (le fichier app devant être visible) : "php app/console"
Vérifie aussi que le fichier "console" est bien executable : sinon faire un "chmod 755" sur ce dernier.
Enfin il faut avoir en tête que l'on demande à php d'interpréter le fichier "console". De fait il se peut que la commande php ne soit pas reconnue. En fonction de ton environnement, les étapes à suivre pour la déclarer peuvent varier : je t'invite donc à consulter l'oracle (google) sur les variables d'environnement et php.
Bonjour,
Ce tuto est très bien expliqué mais je sèche au niveau de la partie admin : il ne trouve pas les routes "_admin_genre" dans le fichier sidebar_admin.html.twig... et me met une exception "An exception has been thrown during the rendering of a template ("Route "_admin_genre" does not exist.") in "MyAppVideothequeBundle:Default:sidebar_admin.html.twig" at line 4" RouteNotFoundException. Va -t-il bien lire les routes dans le controleur?
Bonjour, merci pour cet excellent tutoriel :)
Toutefois, si je puis me permettre, pourriez-vous me donner la signification de ces codes:
* @orm:ManyToMany(targetEntity="Genre", inversedBy="listeDesFilms")
* @orm:JoinTable(name="_assoc_film_genre",
* joinColumns={@orm:JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@orm:JoinColumn(name="film_id", referencedColumnName="id")}
et
* @orm:ManyToMany(targetEntity="Film", mappedBy="listeDesGenres")
que je n'ai pas bien compris? Merci par avance :)
Merci beaucoup pour ce tutoriel, sûrement le mieux expliqué pour ceux qui ont du mal avec la config YAML.
Juste une question, quelqu'un connaît-il la signification exacte des symboles dans les path/pattern (de "firewalls" et "access control") ?
Merci !
partie gneration Bundle console
init:bundle par generate:bundle
sous win taper dans le repertoire web
php app/console generate:bundle --namespace=nom/Bundle/nommBundle
ensuite e.g nom/nomBundle
target format ...par la suite
Real brain power on dispaly. Thanks for that answer!
It was dark when I woke. This is a ray of susnhine.
Keep it comnig, writers, this is good stuff.
I really appreciate free, sccuinct, reliable data like this.
Salut Monsieur j'ai installer symfony version 2.0.3
et j'ai commence ta tuto mais j'ai une problème que j'ai comprends pas voila l'erreur : "Controller "Iabsis\VideothequeBundle\Controller\DefaultController::indexAction()" requires that you provide a value for the "$name" argument (because there is no default value or because there is a non optional argument after this one). "
j'ai verfier tout les fichies routing,routing_dev,addkernel,autoload ... y a pas de fautes . Quelqu'un aider moi stp ?
Merci Gilles pour ce tutoriel .
j'ai le dossier "/vendor/bundles/symfony/bundle" mai pas le dossier "vendor/doctrine-fixture" .
je suis au Sénégal et je compte créer Dakar symfony Users group votre consiel SVP.
Si vou bloquez comme moi au moment de la création des EntityRepository, rajoutez ça en haut de la page de code : use Doctrine\ORM\EntityRepository;
Bonjour à tous,
Je vois que ce tuto commence à avoir du succès. Nous sommes désolé si nous ne donnons pas immédiatement des réponses à vos questions, mais nous sommes actuellement très occupé. De plus, le site ne nous préviens pas encore en cas de post, donc nous ne les voyons pas immédiatement.
Nous vous donnerons très bientôt des nouvelles.
Merci pour votre confiance.
Olivier - Gérant.
Bonjour,
je viens de tomber sur votre tutos. Très intéressant. Celui-ci me permettra de compléter celui du site du zero.
Par contre, je suis confronté à un problème au moment de la création de fixtures. En effet, après avoir bien implémenté tous les dossiers et fichiers, j'executte la commande <<doctrine:fixtures:load>>.
Celle-ci m'affiche une erreur : "Impossible d’exécuter la méthode setPurgeMode".
En parcourant les fichiers, je m’aperçoit que la fonction est inexistante dans la class ORMPurger.
Ai-je loupé un passage? Une seule solution pour éviter de devenir fou, remplir manuellement la BDD. ^^. Si vous avez une solution pour éclairer ma lanterne... ^^
Sinon, merci pour ce tuto et bonne continuation.
Julien
Symfony2 support for developers:
http://area51.stackexchange.com/proposals/36634/symfony2?referrer=b2ptv3NNHPmLTlF6aP0gmQ2
Bonjour,
Merci Gilles pour ce tutoriel.
Julien, pour ton problème de setPurgeMode, j'ai télécharger le bundle data-fixtures à cette adresse https://github.com/doctrine/data-fixtures
au lieu de https://github.com/opensky/data-fixtures/
et cela à fonctionner pour moi.
Il existe aussi un tutoriel sur le siteduzero assez avancé : http://www.siteduzero.com/tutoriel-3-517569-symfony2-un-tutoriel-pour-debuter-avec-le-framework-symfony2.html
Bon courage dans l'apprentissage !
Erreur dans ce tuto
sous win
c:\> app/console init:bundle "Iabsis\VideothequeBundle" src
il faut tapper c:\>php app/console init:bundle "Iabsis\VideothequeBundle" src
merci de corriger pour vos amis les windowsiens !
N'est-il pas possible de prendre en compte les commentaires et corriger les erreurs dans l'énoncé ?
Macksoft si tu n'as pas le dossier, crée le =)
Bonjour tout le monde,
Désolé pour le temps d'attente pour les corrections. Ce tutoriel à été fait lors de la sortie de la version beta de Symfony2 et certaines choses ont changées depuis lors.
Ayant une charge de travail considérable en ce moment, j'ai n'ai pas vraiment eu le temps de mettre à jour ce tutoriel.
Je vais essayer de prendre le temps pour vous fournir la version corrigée pour fonctionner avec la version 2.0.10 dès que j'ai un moment (j'espère la semaine prochaine)
Oui Just, je viens de l'appliquer, merci pour l'info ! :)
Merci pour le tuto! :)
Mais quand on arrive sur un article ou tuto sur le Web... sans date... c'est parturbant.
Il a 3 jours ou 3 mois ce tuto?
Une date prêt du titre serait bienvenue...
Bonjour
à Dragunov, il faut bien veiller à respecter espaces et indentations; vérifier dans le fichier '' index.html.twig '' s'il n'y a pas d'espace entre les deux accolades ouvrantes {{ et entre les deux fermentes }} !!!
Bonjour,
d abord merci pour le tuto, difficiel d en trouvez un aussi sympa..En revanche, je precise que au jour d aujourd hui il ne faut plus ecrire : ini:bundle mais generate:bundle
Merci pour le tuto, tres bon travail
Coucou,
Merci pour les encouragements !
Pour ce qui est de la date du tuto : "Publié le 02/06/2011".
Effectivement la date n'apparait pas dans le tuto même, mais uniquement dans la liste des tutos. Faudrait que je mette à jour le site. Merci pour l'idée :)
Trés bien,
si on veux lister le contenu de chacune de nos tables,
dans quel fichier on ajoute le code de repository (pour chaque table) ^^
Merci d'avance
Bonsoir
merci pour le tuto
mais je suis blocké dans la génération des entités lors de cette commande
php app/console doctrine:generate:entities IabsisVideothequeBundle
il m'affiche cette erreur
Bundle "IabsisVideothequeBundle" does not contain any mapped entities
je comprend pas les choses, nous somme entrain de créer la base de donnée à partir les entités codé déjà dans VideothequeBundle/Entity
alors que le mapping c'est à partir d'une base de donnée existante !!!
merci pour le tuto extra :D,
lou jai utilisé le bundle Fosuserbundle pour la partie Admin ;)