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 :

interfacer FOSUserBundle et FOSCommentBundle [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 18
    Points
    18
    Par défaut interfacer FOSUserBundle et FOSCommentBundle
    bonjour,

    J'ai de petits soucis avec c'est deux Bundles.
    Je n'arrive pas à les lier correctement.
    J'ai suivi cette doc :
    https://github.com/FriendsOfSymfony/.../doc/index.rst

    Je me suis arrêtais à l'étape : Enabling use of the Symfony2 Security Component.
    Il me semble avoir fait les choses correctement cependant lorsque je poste un commentaire en étant identifier j'obtiens ce message:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The comment must implement SignedCommentInterface
    Quelqu'un sait ce qu'il cloche ?

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Je vais essayer d'étoffer un peu ma question.
    L'erreur se produit dans le fichier SecurityCommentBlamer.php
    aux lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (!$comment instanceof SignedCommentInterface) {
                throw new InvalidArgumentException('The comment must implement SignedCommentInterface');
            }
    Je ne cromprend pas ce qui est testé ici.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    Pour ta classe commentaire tu dois rajouter l interface "SignedCommentInterface".

    Donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Comment extends BaseComment implements SignedCommentInterface, VotableCommentInterface
    {
    ...
    }
    Comme indiqué dans la rubrique "Integration with FOSUserBundle" > "Override the comment class".

    Un petit si ma reponse te convient
    Un petit si la réponse convient. Merci.

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Si tu parle de la classe qui se situe dans :
    /Document

    elle est bien comme tu me dit
    pour être sûr je la poste :
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    <?php
     
    namespace app\MonBundle\Document;
     
    use Symfony\Component\Security\Core\User\UserInterface;
    use FOS\CommentBundle\Document\Comment as BaseComment;
    use FOS\CommentBundle\Model\SignedCommentInterface;
    use FOS\CommentBundle\Model\VotableCommentInterface;
    use app\UtilisateurBundle\Document\Utilisateur;
     
    /**
     * @MongoDB\Document
     * @MongoDB\ChangeTrackingPolicy("DEFERRED_EXPLICIT")
     */
    class Comment extends BaseComment implements SignedCommentInterface, VotableCommentInterface
    {
        /**
         * Author of the comment
         *
         * @MongoDB\ReferenceOne(targetDocument="app\utilisateurBundle\Document\Utilisateur")
         * @var User
         */
        protected $author;
     
        /**
         * @param User
         */
        public function setAuthor(UserInterface $author)
        {
            $this->author = $author;
        }
     
        /**
         * Get authorName
         * @return string
         */
        public function getAuthorName()
        {
            if (null === $this->getAuthor()) {
                return 'Anonymous';
            }
     
            return $this->getAuthor()->getUsername();
        }
     
        /**
         * Comment voting score.
         *
         * @MongoDB\Field(type="int")
         * @var integer
         */
        protected $score = 0;
     
        /**
         * Sets the current comment score.
         *
         * @param integer $score
         */
        public function setScore($score)
        {
            $this->score = intval($score);
        }
     
        /**
         * Increments the comment score by the provided
         * value.
         *
         * @param integer value
         * @return integer The new comment score
         */
        public function incrementScore($by = 1)
        {
            $score = $this->getScore() + intval($by);
            $this->setScore($score);
            return $score;
        }
     
        /**
         * Gets the current comment score.
         *
         * @return integer
         */
        public function getScore()
        {
            return $this->score;
        }
    }

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,
    D'aprés la classe que tu présente , il manque la méthode getAuthor.
    https://github.com/FriendsOfSymfony/...tInterface.php

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Je ne crois pas que ce soit la cause de mon problème.
    Je pense par contre que je ne suis pas loin de trouver l'erreur.
    en regardant l'exemple de conf à la page:

    https://github.com/FriendsOfSymfony/.../doc/index.rst

    J'ai remarqué qu'il ne fait aucunes références à Entity et orm. seulement au classes qui sont dans Document. Hors voilà mon fichier de conf :

    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
     
    #CommentBundle
    fos_comment:
        db_driver: mongodb
        class:
            model:
                comment: app\MonBundle\Document\Comment
                thread: app\MonBundle\Document\Thread
        db_driver: orm
        class:
            model:
                comment: app\MonBundle\Entity\Comment
                thread: app\MonBundle\Entity\Thread
        service:
            blamer:
                comment: fos_comment.blamer.comment.security
    Mais si je retire les lignes qui appel les Entities j'ai une erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ServiceNotFoundException: The service "fos_comment.manager.thread.default" has a dependency on a non-existent service "doctrine.odm.mongodb.document_manager".

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Victoire !

    En faite il faut choisir entre l'installation dans Document ou dans Entity.
    MONGO ou ORM.

    J'ai virer Document et j'ai refait ma classe Comment.php dans Entity et ça fonctionne.

    merci pour vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] [FOSUserBundle] Mailer Interface
    Par decad7 dans le forum Symfony
    Réponses: 0
    Dernier message: 04/03/2013, 18h19
  2. [VB6] [Interface] ComboBox à plusieurs colonnes
    Par mtl dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/03/2004, 17h35
  3. [VB6] [Interface] Horloge 7 segments
    Par selenay dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/10/2002, 16h15
  4. interface utilisateur avec OpenGL
    Par demis20 dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/10/2002, 12h27
  5. [VB6] [Interface] Icones de boutons de barre d'outils
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 13/09/2002, 15h50

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