IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Tutoriel pour débuter avec Symfony2 [Tutoriel]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Par défaut
    Citation Envoyé par bilbot Voir le message
    En fait il suffit juste de remplacer ler "\" par ":" pour les assert et tout fonctionne, c'est une des coquilles du tuto qui est également présente dans la doc.
    Nan finalement je racontais une bétise. Mes validateur fonctionnent pas et en repassant au "\" c'est ok.

    Sinon petite suggestion pour "simplifier" le code, faire hériter ActeurController de Symfony\Bundle\FrameworkBundle\Controller\Controller ca permet de raccourcir toutes les syntaxes liées à doctrine... et notamment de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $em = $this->getDoctrine()->getEntityManager()
    au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $em = $this->container->get('doctrine')->getEntityManager()
    idem pour les template/formulaire....

  2. #2
    Membre chevronné
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Citation Envoyé par bilbot Voir le message
    Sinon petite suggestion pour "simplifier" le code, faire hériter ActeurController de Symfony\Bundle\FrameworkBundle\Controller\Controller ca permet de raccourcir toutes les syntaxes liées à doctrine... et notamment de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $em = $this->getDoctrine()->getEntityManager()
    au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $em = $this->container->get('doctrine')->getEntityManager()
    idem pour les template/formulaire....

    Cette méthode n'est pas conseillée car elle enlève toute la flexibilité de l'injection de dépendance...
    A++

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 146
    Par défaut
    Aucun rapport bien au contraire

    Faire hériter ses contrôleur de la classe contrôleur facilite le dev pour bien des raisons comme entre autres les annotations pour le routing ou le templating et bien d'autre.

    Quand a l'injection de dépendance on parle plutôt du fait de passer les services entre eux par paramètres. Le fait d'utiliser le container->get a des avantages en lisibilités mais le gros défaut de coder en dur des références textuelle vers des services.
    Si pour x raison tu doit changer un nom de service pour éviter un conflit ou autre, tu doit faire du rechercher remplacer dans tout ton code et tu perds tout l’intérêt de la chose.

    Il y a de nombreux débats sur le sujet des DI et les avantages inconvénients.

  4. #4
    Membre expérimenté

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Par défaut
    Citation Envoyé par djayp Voir le message
    Cette méthode n'est pas conseillée car elle enlève toute la flexibilité de l'injection de dépendance...
    A++
    Je suis pas expert symfony 2, la seule chose que j'ai constaté c'est que partout dans la doc du framework, c'est comme ça, ça raccourcit pas mal la syntaxe et en parcourant les classe, ça ne charge que les service doctrine / template et formulaire.
    Et sinon je ne connais pas en détail, l'injection de dépendance, mais en quoi ça enlève la flexibilité ? Car ca charge tout un tas de service d'un coup ?

  5. #5
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Janvier 2011
    Messages : 34
    Par défaut
    Salut, moi mon probleme vient du fait que j'ai rajouter dans mon UserBundle/Entity/User

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    use Symfony\Component\Validator\Constraints as Assert;
    les @Assert: ou @Assert\

    Rien n'est pris en compte :s

  6. #6
    Invité de passage
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1
    Par défaut
    J'avais l'habitude d'utiliser Symfony 1.4, et ce tuto est très bien pour franchir le pas vers Symfony 2. Un peu de théorie et de la pratique, c'est ce qu'il faut.

    A mon avis il manque juste deux petites choses :
    • Un début d'initiation aux classes Repository. Dans ce tuto, la logique métier à trop tendance à se retrouver dans le contrôleur. Même si, je suis d'accord, tu effectue des traitements métier simples, et que leur présence dans les contrôleurs ne gène pas trop, il aurait été intéressant de parler des classes Repository, pour avoir une approche complète du MVC.
    • Une petite approche des validateurs pour les formulaires


    Sinon, je me posais des questions à propos de choses que je ne retrouve pas dans Symfony 2 et que je trouvais très utiles dans Symfony 1.4 : Les partials et les components.
    Ils me semble avoir disparus dans Symfony 2, et était très intéressants pour ne pas avoir à dupliquer du code dans les templates.
    J'ai fait des recherches la dessus, j'ai rien trouvé de très cohérent, a par peut être une petite piste indiquant qu'ils étaient gérables avec Twig, mais je n'ai pas trouvé d'info très parlantes.
    Donc si vous pouvez me mettre sur une piste, n'hésitez pas .

    Bonne continuations à tous avec Symfony,
    Greg !

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Dans le cookbook, partie "templates" : http://symfony.com/doc/current/book/templating.html

    La réutilisabilité est évoquée à travers l'héritage ou l'appel d'un contrôleur dans le template.

  8. #8
    Invité de passage
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2011
    Messages : 1
    Par défaut
    Bonjour à tous,
    je suis actuellement ce tutoriel qui est assez clair et concis.
    Toutefois, je me trouve confronté à un petit problème.
    Je suis à la génération automatique des accesseurs. Et la console fait des siennes
    php app/console doctrine:generate:entities MyApp
    me retourne
    Namespace "MyApp" does not contain any mapped entities

    doctrine:generate:entities [--path="..."] [--no-backup] name
    Je me doute que ce soucis vient d'une configuration quelque part. Mais impossible de mettre la main dessus. Cela vous est-il déjà arrivé?
    Auriez-vous une solution à m'apporter?

    Je vous remercie
    Julien

    PS: j'ai comparé mon code avec la partie concernée dans les fichiers sources mais je n'ai pas trouvé de différences.

  9. #9
    Membre averti
    Inscrit en
    Août 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 13
    Par défaut
    Bonjour,

    Ayant ramé pendant près de 20m, je tiens à apporter quelques précisions qu'il me semble essentiel de préciser.

    Lors de la génération des get() et set(), j'étais confronté à une erreur fatale sur le namespace. Alors que tout était bon, impossible de compiler.

    Deux raisons :
    - Utilisant Notepad++, il utilise l'UTF8 ou le ANSI qui ne fonctionne pas. Il est nécessaire d'utiliser UTF8 (Sans BOM)
    - Deuxièmement, même avec le bon encodage cela ne fonctionnait toujours pas. En effet, la première ligne des 3 entités est une ligne vide... qui fait planter la compilation. Il est nécessaire que la première ligne soit <?php ou bien la génération des get() / set() ne fonctionne pas.

    Espérant épargner ces soucis à m'en arracher les cheveux à d'autres, je vous conseille de mettre un encart là dessus...

    Cordialement

    P.S : Merci pour le tutoriel

  10. #10
    Nouveau membre du Club
    Inscrit en
    Novembre 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 10
    Par défaut Doctrine et données XML ?
    Ainsi, nous pourrions très bien stocker nos films et acteurs dans des fichiers XML, dans une base SQLite ou MySQL, sans que cela ne change quoi que ce soit au code PHP que nous allons écrire.
    Cette remarque m'a beaucoup intéressée, car c'est très exactement ce que je cherche à faire, à utiliser des données stockées en XML plutôt qu'en base de données. Cependant, impossible de trouver de la documentation à ce sujet, y compris dans la doc de doctrine.
    Est-ce une erreur du tutoriel ou est-ce réellement possible et auquel cas, comment ?
    Merci par avance.

  11. #11
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Cybeber Voir le message
    Cette remarque m'a beaucoup intéressée, car c'est très exactement ce que je cherche à faire, à utiliser des données stockées en XML plutôt qu'en base de données. Cependant, impossible de trouver de la documentation à ce sujet, y compris dans la doc de doctrine.
    Est-ce une erreur du tutoriel ou est-ce réellement possible et auquel cas, comment ?
    Merci par avance.
    c'est dans le sans ou les Entites sont très souple, tu pourrais etrendre un Entity a une classe qui gère le XML

  12. #12
    Nouveau membre du Club
    Inscrit en
    Novembre 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 10
    Par défaut
    c'est dans le sans ou les Entites sont très souple, tu pourrais etrendre un Entity a une classe qui gère le XML
    Merci bien pour la réponse... Ca me donnée une idée du boulot que ça demanderait... Du coup, à défaut de recourir à doctrine, Symfony propose-t-il une gestion particulière des fichiers XML ou le développement d'un bundle spécifique est-il nécessaire ? Et dans ce cas, à votre avis, qu'elle est la meilleure option ?

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Cybeber Voir le message
    Merci bien pour la réponse... Ca me donnée une idée du boulot que ça demanderait... Du coup, à défaut de recourir à doctrine, Symfony propose-t-il une gestion particulière des fichiers XML ou le développement d'un bundle spécifique est-il nécessaire ? Et dans ce cas, à votre avis, qu'elle est la meilleure option ?
    dans Symfony2 le XML c'est uniquement lié au config, donc oui je pense qu'il va falloir créer un bundle, je vais essayé dans faire un, ça me semble intéressant comme projet

  14. #14
    Invité de passage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 1
    Par défaut Flush
    Salut à tous,

    j'ai moi aussi dû m'adapter aux modifications à faire du fait que la version de Symphony du tuto est plus ancienne que la dernière version..
    Heureusement grace à vos conseils je m'en suis sorti

    J'ai une chose toutefois qui ne marche pas chez moi: Dans la partie VII-D. Enregistrement d'une première donnée il est écrit que "Pour éviter de créer ces catégories chaque fois que vous accédez à cette URL, vous pouvez mettre la ligne $em->flush(); en commentaire ou bien renommer la fonction indexAction() pour enregistrerCategorie()." toutefois dans mon cas si je recharge la page X fois à chaque fois il me réinsère les meme catégories créant inévitablement des doublons...

    D'après la doc officielle de doctrine cette fonction évite en effet les doublons mais dans mon cas ça ne marche pas. L'un d'entre vous aurait-il eu ce problème?

    Quelqu'un sait par hasard où est le problème? J'ai suivi scrupuleusement les indications du tuto (=j'ai rien de custom)

    Merci d'avance

Discussions similaires

  1. Cours et tutoriels pour débuter avec SAP
    Par birdy85 dans le forum SAP
    Réponses: 22
    Dernier message: 14/09/2016, 21h37
  2. Quel livre ou tutoriel pour débuter avec DOT.NET
    Par trent94 dans le forum Débuter
    Réponses: 16
    Dernier message: 09/02/2012, 16h46
  3. Tutoriel pour débuter rapidement avec les Windows.Forms ?
    Par Leelith dans le forum Windows Forms
    Réponses: 6
    Dernier message: 03/12/2008, 14h25
  4. [Portlet] Tutoriel pour débuter avec les portlets
    Par AbdeL02 dans le forum Portails
    Réponses: 7
    Dernier message: 20/08/2008, 00h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo