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 :

Deuxième tutoriel sur Symfony2 pour améliorer vos applications [Tutoriel]


Sujet :

Symfony PHP

  1. #1
    Membre éclairé
    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
    Points : 687
    Points
    687
    Par défaut Deuxième tutoriel sur Symfony2 pour améliorer vos applications
    Bonjour à tous,

    je vous propose la suite du tutoriel sur Symfony2. Le premier tutoriel permettait de découvrir ce framework à travers le développement d'une petite application.

    Ce second tutoriel aborde de nombreux aspects pour améliorer l'application :
    • Mise en page, insertion d'images, de styles CSS
    • Personnalisation des formulaires
    • Symfony2 et Ajax
    • Traduction et fichiers de langue
    • Utilisateurs et espace sécurisé


    Vous le trouverez ici.

    Bonne lecture !
    Jérôme

  2. #2
    Membre du Club
    Inscrit en
    avril 2002
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : avril 2002
    Messages : 53
    Points : 47
    Points
    47
    Par défaut
    Salut,

    Très bon tutorial. Merci !

    Par contre je viens de constater une petite erreur. Au niveau de la partie Ajax tu fais un test pour voir si le mot-clé est vide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(motcle == ''){
            $(".loading").hide();
        }else{ ...
    Ce qui empêche de ré-afficher la liste complète des acteurs après avoir fait une recherche.
    J'ai dû enlever ce test pour que ça fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <script>
    $(".loading").hide();
    $("#form_recherche").submit(function(){ 
        $(".loading").show();
        var motcle = $("#acteurrecherche_motcle").val();
        var DATA = 'motcle=' + motcle;
        $.ajax({
                type: "POST",
                url: url: "{{ path('myapp_acteur_rechercher')}}",
                data: DATA,
                cache: false,
                success: function(data){
                   $('#resultats_recherche').html(data);
                   $(".loading").hide();
                }
             });
     }
        return false;
    });
    </script>
    Autres petites erreurs :

    1) Au niveau de la gestion des utilisateurs, à un moment tu dis:

    Essayez maintenant d'accéder à la liste des utilisateurs en vous rendant sur : http://localhost/Symfony2/web/app_de...yapp/user/list
    Hors la listes des utilisateurs ne semble plus être disponible dans la version actuelle de FOSUserBundle (plus de fichier user.xml).


    2) Dans le fichier security.yml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            # PAGES ACCESSIBLES A TOUS
            - { path: ^/myapp.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
     
            # PAGES ACCESSIBLES AUX UTILISATEURS CONNECTES
            - { path: ^/myapp/user/list/, role: ROLE_USER }
     
            # PAGES ACCESSIBLES AUX ADMINISTRATEURS
            - { path: ^/myapp/admin/, role: ROLE_ADMIN }
    C'est dans le mauvais ordre.
    Comme les path sont évalués dans l'ordre, ^/myapp/admin/ répond au pattern ^/myapp.* et donc n'importe qui peut accéder aux pages admins
    Il faudrait plutôt ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            # PAGES ACCESSIBLES AUX ADMINISTRATEURS
            - { path: ^/myapp/admin/, role: ROLE_ADMIN }
     
            # PAGES ACCESSIBLES AUX UTILISATEURS CONNECTES
            - { path: ^/myapp/user/list/, role: ROLE_USER }
     
            # PAGES ACCESSIBLES A TOUS
            - { path: ^/myapp.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
    Note: suite au point 1) la déclaration suivante ne serait plus révélatrice :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    # PAGES ACCESSIBLES AUX UTILISATEURS CONNECTES
    - { path: ^/myapp/user/list/, role: ROLE_USER }
    DJ Malo

    www.radioabf.net
    La radio 100 % musiques électroniques sans pub.

  3. #3
    Membre éclairé
    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
    Points : 687
    Points
    687
    Par défaut
    Erreurs corrigées. Merci !

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2011
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Tres bon tutoriel.

    Néanmoins j'ai un petit soucis avec l'utilisation de FOSUserBundle.
    Juste après avoir configure les routes, je me rends sur la page d'inscription et j'obtiens ce message :

    Fatal error: Label 'not_fos_user_profile_show' already defined in app/cache/dev/appdevUrlMatcher.php on line 261
    Pour info j'utilise la RC4 de Symfony 2.

    Si vous avez une idée d’où peut provenir le problème je suis preneur.

    Merci !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    novembre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 174
    Points : 80
    Points
    80
    Par défaut
    Excellentissime tout cela!

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    juillet 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : juillet 2011
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Tout d'abord, merci beaucoup pour ces 2 tutoriels très bien expliqués!

    Cependant j'ai un petit problème persistant même lorsque je remplace mes fichiers par ceux que tu donnes à la fin de ton tuto :

    La page de connexion fonctionne, mais toutes les autres liées au bundle FOSUser ont une vue vide, càd que lorsque j'essaye d'accéder à la page d'inscription, de récupération de mot de passe, de profil, etc, ma page est vide. Est-ce anormal ou alors c'est prévu & c'est à moi de remplir ?

    Sinon dans app/config/security.yml, dans section "role_hierarchy", il me semble qu'il faille mettre "ROLE_SUPER_ADMIN" plutôt que "ROLE_SUPERADMIN", non ?

    Edit: aussi, lorsqu'un compte se déconnecte, le site se met automatiquement en Anglais. J'ai un peu cherché dans les codes mais je n'ai pas trouvé; comment faut-il pour que ça se mette dans le language juste avant la connexion ? (ou alors que ça force à se mettre en français plutôt qu'en Anglais si tu ne sais pas ^^)

    Merci bien ;-)

    Edit : Aussi, lors des déconnexions, la page se met automatiquement en Anglais, comment est-ce que je peux régler ça ? merci !

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2010
    Messages : 52
    Points : 76
    Points
    76
    Par défaut
    Salut !

    Moi pour l'install de FOSUserBundle j'aurais plutôt proposé de l'ajouter au deps. C'est plus sympa puisque comme cela on peut le mettre à jour facilement... Non ?

    Très bon tuto par contre .
    Nek, développeur amateur.
    Wiki (Symfony2) - Nekland - Minecraft

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2010
    Messages : 30
    Points : 22
    Points
    22
    Par défaut Pbme lors de la traduction
    J'ai suivi à la lettre le tutoriel sur la traduction paragraphe V-D, mais j'obtiens l'erreur suivante :
    An exception has been thrown during the rendering of a template ("The YAML value does not appear to be valid UTF-8 in "C:\\wamp\\www\\Symfony\\src\\Fred\\FilmothequeBundle\/Resources\/translations\\messages.fr.yml".") in "FredFilmothequeBundle:Acteur:lister.html.twig" at line 3.

    Fichier lister.html.twig line 3:
    {% block title %}{{ 'acteur.liste' | trans }}{% endblock %}

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2010
    Messages : 30
    Points : 22
    Points
    22
    Par défaut Pbme avec le paragraphe Gestion des droits d'accès
    Bonjour,

    Le tuto est excellent, mais j'ai l'impression qu'il manque des éléments à partir du paragraphe la gestion des utilisateurs. Le formulaire login est absent par exemple, je l'ai trouvé en téléchargeant la source.

    Par contre, maintenant je suis bloquée au niveau de paragraphe gestion des droits d'accès, j'ai l'erreur suivante
    "FileLoaderLoadException: Cannot import resource "C:\wamp\www\Symfony\app/config\security.yml" from "C:\wamp\www\Symfony\app/config\config.yml"
    et
    "ParseException: The YAML value does not appear to be valid UTF-8 in "C:\\wamp\\www\\Symfony\\app\/config\\security.yml".

    J'ai regardé l'indentation, les espaces, le nom des fichiers, ... .Je suis sûr que j'ai commis une erreur mais je ne la trouve pas et le répertoire source ne contient pas ces fichiers.

    Merci de votre aide

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2010
    Messages : 52
    Points : 76
    Points
    76
    Par défaut
    Peut être bien un problème de droits ?

    À moins que ça soit lié au fait que tu encodes ton fichier en UTF-8 BOM. Ce que PHP ne supporte pas...
    Nek, développeur amateur.
    Wiki (Symfony2) - Nekland - Minecraft

  11. #11
    Candidat au Club
    Inscrit en
    août 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : août 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Salut!
    Bon, très cool ce tuto.

    Je bloque cependant à la partie VI-A-2, intégration de FOSUser. J'ai suivi scrupuleusement les instructions d'installation (sauf app/console qui ne reconnait pas init:bundle, mais j'y reviendrai dans un prochain post; j'ai procédé à l'install comme indiqué pour MyAppFilmothequeBundle dans le 1er tutorial), j'ai été voir la doc de FOSUser, rien à faire!

    => la table utilisateur créée lors du "doctrine:schema update --force" ne contient qu'un champs "id"!

    En même temps, je ne comprends pas comment il pourrait en être autrement: les classes mères de Utilisateur (de FOS) ne comportant aucune annotation orm, comment doctrine pourrait s'y retrouver?

    Si quelqu'un peut me dépanner/m'expliquer?
    Merci!

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    août 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : août 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Soucis lors de l'installation de FOSUserBundle
    Bonjour, et tout d'abord merci beaucoup pour cet excellent tutoriel.

    Je bloque moi aussi sur la gestion des utilisateurs à la partie VI-A-4.

    Lorsque je vais sur la page http://localhost/Symfony2/web/app_de...yapp/register/ pour voir si tout fonctionne, je n'ai que le header et le footer... et pas le formulaire au milieu.

    Pourtant, tout à fonctionné jusqu'ici (y compris la création de mon utilisateur avec la console)

    Quelqu'un a-t-il rencontré le même soucis ?

    Merci d'avance !

    Nicolas

  13. #13
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    26 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 26 081
    Points : 185 741
    Points
    185 741
    Par défaut
    Pour rappel, dans l'introduction :

    Ce tutoriel est basé sur Symfony2.0BETA5 que vous pouvez télécharger ici : http://symfony.com/download.
    Depuis la beta 5, on a eu quelques RC et la version finale ; de même, depuis juin, le FOSUserBundle a pas mal bougé. C'est donc normal qu'il y ait quelques incompatibilités .

    Pour info, le premier tutoriel est en cours de mise à jour, le deuxième devrait bientôt suivre, plus d'informations dans les sujets desdits articles.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  14. #14
    Membre éclairé
    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
    Points : 687
    Points
    687
    Par défaut
    Citation Envoyé par dourouc05 Voir le message
    Pour info, le premier tutoriel est en cours de mise à jour, le deuxième devrait bientôt suivre, plus d'informations dans les sujets desdits articles.
    Je confirme c'est en cours !

  15. #15
    Candidat au Club
    Inscrit en
    août 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : août 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Ok cool, merci! : )

    J'attaquerai la partie authent plus tard, je me concentre sur le reste en attendant! ; )

    Bon courage.

  16. #16
    Candidat au Club
    Homme Profil pro
    Inscrit en
    septembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : septembre 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Amélioration possible
    Slt,
    Trouvé sur la toile et plus utile je trouve, ajouter l'option
    lors de la publication des asset,
    on a alors la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    app/console assets:install --symlink web
    On a alors les liens symboliques qui pointent directement sur le bundle et
    cela permet de modifier les feuilles de style ou script sans être obligé
    de les re-publier.

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    juin 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : juin 2011
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Bonsoir

    Puis je me lancer dans ce Tuto dans son intégralité sans tomber sur des problèmes de compatibilité ?

    A t'il été mis à jour à présent ?

  18. #18
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 643
    Points : 624
    Points
    624
    Par défaut
    Ce tutoriel répond vraiment à un besoin important. Il apporte des exemples précis, mais malheureusement, je dois lui adresser le reproche de n'expliquer presque rien.

    Par exemple à la section http://j-place.developpez.com/tutori...fony2/#LVI-A-4, les roules sont déclaré dans un fichier de routing à l'intérieur du bundle plutôt que dans le fichier commun. Très certainement que j'ai du faire quelque chose d'incorrect, car chez-moi les routes ne fonctionnent pas. Alors je me pose la question "Comment symfony2 sait-il qu'il doit charger ce fichier". Le tutoriel n'y répond pas.

    Mais bon, je met ce problème de coté et opte pour la solution facile, je met mes routes dans le fichier app/config/routing.yml.
    Autre question du même genre, à la section http://j-place.developpez.com/tutori...fony2/#LVI-B-2, on créer un template MyApp/UtilisateurBundle/Resources/views/connexion.html.twig . Or chez-moi, encore une fois, le fichier n'est pas chargé. Donc qu'est-ce qui indique à Symfony que ce fichier doit remplacer celui par défaut de FOSUserBundle ?


    Voilà, en espérant que ma petite expérience aide à améliorer le tutoriel !
    Sinon beau boulot, comme je l'ai dis, ces 2 tutoriels sont vraiment aidant, mais pas encore parfait (pour un total débutant) malgré leurs 5 étoiles

  19. #19
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    janvier 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : janvier 2008
    Messages : 16
    Points : 16
    Points
    16
    Par défaut VI-A. La gestion des utilisateurs avec FOSUserBundle
    Bonsoir,
    j'ai suivi votre 1er tuto avec grand plaisir! Merci pour le travail effectué, c'est très pratique pour les débutants comme moi

    Dans le second tuto, celui pour améliorer les applications, je rencontre une difficulté qui me bloque.

    Dans la partie VI, lorsque je fais la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php bin/vendors install --reinstall
    j'ai une erreur, et tout les dossiers initialement présents dans le dossier vendors ont disparu..

    Et puis le site ne fonctionne plus, il affiche une erreur :
    Fatal error: Class 'Symfony\Component\DependencyInjection\ContainerAware' not found in C:\xampp\htdocs\Symfony2\app\bootstrap.php.cache on line 1264
    Auriez-vous une piste ?

    Merci d'avance !

  20. #20
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    novembre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : novembre 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Un bug étrange sur la surcharge Utilisateur
    En suivant à la lettre le tuto, je me retrouvais avec l'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Class MyApp\UtilisateurBundle\Entity\Utilisateur is not a valid entity or mapped super class.
    Et figurez-vous qu'il a suffit que j'ajoute à ma classe utilisateur la déclaration suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	/**
    	 * @ORM\Column(name="avatar", type="string", length=100)
    	 */
    	protected $avatar;
    Je recompile, j'injecte en base de donnée, et hop ! ça marche

    Bien sûr, j'ai refait plusieurs fois la manipulation pour être sûr de ce que j'avance. ( J'ai retiré $avatar, et recommencer... et paf erreur ! )

    Aucun de vous n'a été confronté à ce problème ?

    En tout cas chouette tuto !

    Bravo ;-)

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/04/2010, 22h52
  2. Réponses: 17
    Dernier message: 15/01/2009, 08h40
  3. Récupérer le N° du disque dur pour protéger vos applications
    Par etoileetoile dans le forum Sécurité
    Réponses: 2
    Dernier message: 25/10/2008, 22h34

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