原文作者:FriendsOfSymfony
授权许可:创作共用协议
翻译人员:FireHare
校对人员:
适用版本:FOSCommentBundle 2.0.5
文章状态:草译阶段
The default implementation of FOSCommentBundle uses asynchronous javascriptand jQuery (optionally with easyXDM for cross domain requests) to load a comment thread into a page.
FOSCommentBundle的缺省实现是使用异步javascript和jQuery(也可以使用easyXDM进行跨域请求)来将评论线索加载到页面。
It is possible to include the thread without using javascript to load it, but needs additional work inside the controller's action.
不使用javascript来引导线索加载也是可以实现的,但需要在控制器的Action中进行额外的工作。
At a minimum, you will need to include the following in your action's PHP code:
至少,您需要在您Action中的PHP代码中包含下列语句:
public function somethingAction(Request $request) { $id = 'thread_id'; $thread = $this->container->get('fos_comment.manager.thread')->findThreadById($id); if (null === $thread) { $thread = $this->container->get('fos_comment.manager.thread')->createThread(); $thread->setId($id); $thread->setPermalink($request->getUri()); // Add the thread $this->container->get('fos_comment.manager.thread')->saveThread($thread); } $comments = $this->container->get('fos_comment.manager.comment')->findCommentTreeByThread($thread); return $this->render('AcmeDemoBundle:Controller:something.html.twig', array( 'comments' => $comments, 'thread' => $thread, )); }
Once you've included this code in your action, some code must be included in your template:
一旦您已经在您的Action中包含了上述代码,那么也必须在您的模板中包含一些代码:
{% block body %} {# ... #} <div id="fos_comment_thread" data-thread="` thread`.`id `"> {% include 'FOSCommentBundle:Thread:comments.html.twig' with { 'comments': comments, 'thread': thread } %} </div> {# ... #} {% endblock body %} {% block javascript %} {# jQuery must be available in the page by this time, and make sure javascript block is after <div id="fos_comment_thread"> in the DOM Tree, for example right before </body> tag #} {% javascripts '@FOSCommentBundle/Resources/assets/js/comments.js' %} <script type="text/javascript" src="` asset_url `"></script> {% endjavascripts %} {% endblock javascript %}