Bonjour à tous

J'ai besoin d'aide pour FOSComment Bundle.

Voilà ce que j'ai fait : une entité Article en OtO avec une entité Thread (créée en suivant la doc) et une entité Comment (créée en suivant la doc).

Mon problème : Dans ma vue, il est marqué qu'il y a 0 Commentaire (ce qui est normal) mais je n'ai pas de champ pour en ajouter. Je n'arrive pas à l'obtenir (ce qui est somme toute logique puisque je n'instancie pas de formulaire).

Est-ce que quelqu'un s'est déjà servi de ce bundle et sait comment faire pour tout afficher dans la vue ?

Merci d'avance,

Nans

24 réponses


G1.3
Réponse acceptée

Salut

Je viens de regarder sur un vieu projet et j'ai ça à l'endroit où je veux afficher mon form:

{% include 'FOSCommentBundle:Thread:async.html.twig' with {'id': XXXXX} %}

XXX = identifiant unique de ton article (prefix le par qqch si tu veux pouvoir commenter autre chose que des articles dans le futur ;) )

Est-ce que ça fonctionne et est-ce bien ça que tu cherchais ?

nans
Auteur

Salut ! Merci pour ta réponse rapide !

Oui c'est bien ce que j'ai fait mais ça ne fonctionne pas.

Est-ce que ces affichages se via javascript ??
Parce que j'ai une erreur dans ma console et cela pourrait être la cause.

C'est quoi comme erreur ? Tu peux la montrer, car ça peut être une erreur en amont du JS de FOSComment qui stop l'éxécution du JS restant.

As tu précisé des roles dans les ACL, car dans ma conf j'en ai. Idem pour les routes, tu las as ?

fos_comment_api:
    type: rest
    resource: "@FOSCommentBundle/Resources/config/routing.yml"
    prefix: /api
    defaults: { _format: html }

Si tu utilises assetic, pense à ajouter FOSCommentBundle dans la conf assetic.bundles

nans
Auteur

(désolé pause déjeuner)

erreur :
GET http://localhost/europe/europe/web/bundles/foscomment/js/comments.js
GET http://localhost/europe/europe/web/app_dev.php/_wdt/c2f6f9 404 (Not Found)

j'ai un sérieux problème pour savoir comment déclarer mes fichiers javascripts... je bisouille sans jamais trouver.
là j'ai fait ça :

<script type="text/javascript" src="{{ asset('bundles/public/jquery/dist/jquery.min.js') }}"></script>
<script type="text/javascript" src="{{ asset('bundles/public/js/comments.js') }}"></script>

j'ai aussi testé avec ça :

{% javascripts '@FOSCommentBundle/Resources/public/js/comments.js' %}
<script type="text/javascript" src="{{ asset('bundles/public/jquery/dist/jquery.min.js') }}"></script>
{% endjavascripts %}

J'ai bien déclaré les routes et j'ai bien ACL dans mon config.yml

nans
Auteur

puis ça après avoir déclaré correctement :

Uncaught TypeError: $.get(...).error is not a function
at Object.get (comments.js:85)
at Object.getThreadComments (comments.js:103)
at comments.js:525
at comments.js:540

Ça semble être ta version de jQuery qui pose probleme. Bon path ? C'est quelle version ? Il peut y avoir une rupture de compabilité. FOSComment semble un peu vieux...

https://github.com/FriendsOfSymfony/FOSCommentBundle/blob/master/Resources/doc/4-enable_comments_on_a_page.md

The implementation javascript provided with FOSCommentBundle relies on jQuery 3.x

Après tu n'est pas obligé d'utiliser async, il doit surement y avoir d'autres façon d'ajouter un commentaire.

nans
Auteur

J'ai jquery 3.2.1

Là je commence à sécher. A tout les coups c'est un truc super con...

nans
Auteur

Ma vue :

{% extends 'ContentBundle::base.html.twig' %}
{% block stylesheets %}<link rel="stylesheet" href="{{ asset('bundles/public/css/comment.css') }}" />{% endblock %}

{% block body %}
<div id="fos_comment_thread" data-thread="{{ thread.id }}">{% include 'FOSCommentBundle:Thread:async.html.twig' with {'id': 35} %}</div>

<script type="text/javascript" src="{{ asset('bundles/public/jquery/dist/jquery.js') }}"></script>
<script type="text/javascript" src="{{ asset('bundles/foscomment/Resources/public/js/comments.js') }}"></script>

{% endblock %}
nans
Auteur

s'affiche :
0 commentaire

Il semble que tu ne sois pas obligé d'inclure le JS for FOSComment, dans le fichier async.html.twig c'est fait dynamiquement. Tu peux essayer de mettre jquery avant ton include ?

De plus, tu peux retirer ton div qui englobe l'include nan ? Il est re-défini dans l'include

nans
Auteur

Toujours cette erreur :
comments.js:85 Uncaught TypeError: $.get(...).error is not a function
at Object.get (comments.js:85)
at Object.getThreadComments (comments.js:103)
at comments.js:525
at comments.js:540

nans
Auteur

Mon problème vient bien de mon js. Quand je fais un autre include :

<div id="fos_comment_thread" data-thread="{{ thread.id }}">

            {% include 'FOSCommentBundle:Thread:comments.html.twig' with {'comments': comments,'thread': thread} %}
        </div>

Avec la récupération de comments comme dans la doc, je n'ai pas d'erreurs en console (mais cet include ne permet pas l'envoi de commentaires

nans
Auteur

par contre je suis à peu près sûr de pouvoir réussir à le faire fonctionner d'un point de vue de ma config parce que hier j'ai réussi à afficher les boutons pour voter pour les commentaires et pour répondre au commentaire ainsi que pour en envoyer.
(mais je ne sais plus comment j'avais procédé)

nans
Auteur

Ouuups, un problème de ROLE. J'avais interdit la création de commentaire à mon ROLE. C'est la méga honte de t'avoir fait réfléchir à tout ça pour une erreur pareil. Désolé !

Par contre j'ai toujours mon erreur js qui rend inactifs mes boutons (sauf le "poster")

Haha, je l'avais dit, a tous les coups c'est un truc super con :D

Tu peux remettre le code de ta vue avec le form puis l'affichage des commentaires.

Voir quels fichiers JS tu inclus et où dans ton DOM.

Tu fais bien des php app/console a:d pour mettre à jour les assets (et aussi a:i --symlink) ?

nans
Auteur

Alors je suis un peu une quiche avec les symlink. Je sais que c'est super utile mais je fais ça comme un sale en copiant collant dans mon repertoire web. (je suis en local pour le moment donc ça me gêne pas trop, j'ai tellement de gros trucs à faire que ça passe au second rang)

nans
Auteur

pour le comments.js, je l'ai recopié collé, il semblerait que l'erreur soit parti, mais ça me paraît bizarre parce que je n'y ai pas touché !

Le symlink t'es pas obligé (et je sais pas si ça fonctionen sur toutes les machines), mais si tu lances php app/console a:i ça va te copier les assets dans le bon répertoire de web (en mode hard copy).

Du coup problem solved ?

nans
Auteur

J'ai posté mon erreur sur github. Quelqu'un a le même problème. ça doit être une erreur au chargement du fichier avec composer, je ne vois que ça

nans
Auteur

Globalement, je suis vachement déçu du rendu !
Je pensais pouvoir masquer/afficher les réponses à un commentaire, ce n'est pas le cas a priori
Les requêtes ajax sont longues à traiter
le CSS prévu est moche
pas de captcha
et surtout, il est possible de voter plusieurs fois pour un commentaire !

Salut Nans, j'ai exactement le même probleme la même erreur sur la console sauf que moi rien ne s'affiche pourrais-tu me donner ton lien github ?

Salut, j'ai suivi l'issue mais toujours le même probleme, avec les même erreurs, rien ne s'affiche j'ai pourtant suivi la doc d'installation : https://github.com/FriendsOfSymfony/FOSCommentBundle/blob/master/Resources/doc/index.md je vais pas faire un multi post mais si tu veux voir mes fichiers et autres, j'ai deja fait un post sur OC : https://openclassrooms.com/forum/sujet/symfony3-foscommentbundle-config il me manque vraiment que sa pour finir mon projet :).