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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 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 averti
    Inscrit en
    Avril 2002
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 53
    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 }

  3. #3
    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
    Erreurs corrigées. Merci !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    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 confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 174
    Par défaut
    Excellentissime tout cela!

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 14
    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 actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    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 .

  8. #8
    Membre averti
    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
    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 averti
    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
    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 averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Par défaut Problème AJAX
    Bonjour,

    tout d'abord merci pour ce tutoriel très instructif.
    J'ai cependant un problème avec le code AJAX.
    En effet je ne maitrise pas ce language, et j'ai le plus grand mal à débugger.

    Voici le code de ma page html (j'ai adapté le tuto à une problematique immobilière)

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    {% extends 'ImmobilierSwitchHomeBundle::layout.html.twig'%}
    {% block content%}
    <form id="form_recherche" action = "{{path('immobilier_deal_rechercher')}}" method="post" > 
    <table summary="Recherche rapide">
    		<caption>Recherche rapide</caption>
    <tfoot>
    	<tr><th scope="row" colspan =4><input type="submit" value="Rechercher"/></th></tr>
    </tfoot>
    	<tbody>
    	<tr>
    		<th scope="col" colspan =4>{{form_label(form.motcle)}}</th>
    		<th scope="row" colspan =4>
    			{{form_errors(form.motcle)}}
    			{{form_widget(form.motcle)}}
    		</th>
    	</tr>
    {{ form_rest(form)}}
    </tbody>
    </table>
    </form>
    <div class="loading"></div>
    <div id="resultats_recherche">
    {% include 'ImmobilierSwitchHomeBundle:Deal:listDeal.html.twig' with {'deals' : deals} %}
    </div>
     
    <script>
    $(".loading").hide();
    $("#form_recherche").submit(function(){
    $(".loading").show();
    var motcle = $("#dealrecherche_motcle").val();
     
    		var DATA = 'motcle=' + motcle;
    		$.ajax({
    			type: "POST",
    			url: "{{ path('immobilier_deal_rechercher')}}",
    			data: DATA,
    			cache: false,
    			success: function(data){
    				alert("success");
    				$('#resultats_recherche').html(data);
    				$(".loading").hide();
    			},
    			error: function(){
    				alert("error");
     
    			}
    		});
    return false;
    });
    </script>
     
    {% endblock %}
    lors de l'execution, j'ai l'alert "error" qui apparaît. J'en déduis qu'il y a une erreur dans l'execution de mon code ajax, mais impossible de savoir où.

    Quelqu'un a t il une idée?

    Merci,

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