0

我正在尝试使用 FOSCommentBundle 在我的应用程序中实现评论线程部分。但是我已经按照指南安装它https://github.com/FriendsOfSymfony/FOSCommentBundle/blob/master/Resources/doc/index.md并没有出现任何内容。我已经根据我所看到的正确创建了评论和线程实体类

<?php

namespace AppBundle\Entity;

 use Doctrine\ORM\Mapping as ORM;
 use FOS\CommentBundle\Entity\Comment as BaseComment;

/**
 * @ORM/Entity
 * @ORM\ChangeTrackingPolicy("DEFERRED_EXPLICIT")
 */
class Comment extends BaseComment
{
/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @var Thread
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Thread")
 */
protected $thread;
}

<?php
 namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use FOS\CommentBundle\Entity\Thread as BaseThread;

/**
 * @ORM\Entity
 * @ORM\ChangeTrackingPolicy("DEFERRED_EXPLICIT")
 */
class Thread extends BaseThread
{
/**
 * @var string $id
 *
 * @ORM\Id
 * @ORM\Column(type="string")
 */
protected $id;
}

我还在命令行 php bin/console dictionary:schema:update --force 中发出了命令,但没有注意到我的 MySQL Workbench 中有任何新表。

我的 index.html.twig 文件的布局也像

{% extends 'base.html.twig' %}

{% block body %}
{% include '@FOSComment/Thread/async.html.twig' with {'id': 'foo'} %}
{% endblock %}

{% block javascripts %}
<script src="http://code.jquery.com/jquery-3.2.1.js"></script>
{% endblock %}

所以这对我来说也很好。然而,最后什么都没有出现。对这个捆绑包有更多了解的人可以让我知道我可能出错的地方吗?如果您需要查看更多代码,我很乐意向您展示。

这也是 JavaScript 代码在页面源代码中的外观

// thread id
var fos_comment_thread_id = 'foo';
var fos_comment_thread_view = 'tree';

// api base url to use for initial requests
var fos_comment_thread_api_base_url = '/api/threads';

// Snippet for asynchronously loading the comments
(function() {
    var fos_comment_script = document.createElement('script');
    fos_comment_script.async = true;
    fos_comment_script.src = '/bundles/foscomment/js/comments.js';

    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(fos_comment_script);
})();
4

1 回答 1

0

我正在使用 Symfony 3.4,我遇到了同样的问题。我希望您可以通过以下步骤解决它:

  1. 复制vendor/friendsofsymfony/comment-bundle/Resources/public/js/comments.jsweb/bundles/foscomment/js/comments.js

  2. 复制vendor/friendsofsymfony/comment-bundle/Resources/views/*app/Resources/FOSCommentBundle/views/*

  3. <script>在文件的 -Tags周围包裹一个 javascript 块async.html.twig

    {% block javascripts %}
    <script>
    // thread id
    var fos_comment_thread_id = '{{ id }}';
    var fos_comment_thread_view = '{{ view|default('tree') }}';
    
    // api base url to use for initial requests
    var fos_comment_thread_api_base_url = '{{ path('fos_comment_get_threads') }}';
    
    // Snippet for asynchronously loading the comments
    (function() {
        var fos_comment_script = document.createElement('script');
        fos_comment_script.async = true;
        fos_comment_script.src = '{{ asset('bundles/foscomment/js/comments.js') }}';
    
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(fos_comment_script);
    })();
    </script>
    {% endblock %}
    
  4. 注意,jQuery 是在这个 javascript 之前加载的。

于 2018-08-16T10:57:30.723 回答