使用FOSCommentBundle时是否可以使用自定义用户提供程序签署注释?

时间:2013-03-08 23:18:23

标签: symfony symfony-2.1 foscommentbundle

我在Symfony2.1应用程序中使用自定义UserProvider进行身份验证。我想使用FOSCommentBundle来实现评论。但是当评论作者对评论进行签名时,我被困住了。

基本上,我有两个数据库。我可以从中检索用户的凭据(用户名,盐,密码......)但我无法进行任何修改,另一个我可以用来存储用户信息(如她/他的评论) )在用户实体中。

当我将Comment实体映射到此User实体时,由于FOSCommentBundle检索实现UserInterface的实体(在我的安全包中)而不是此User实体,因此存在问题。

基本上,有没有办法告诉FOSCommentBundle检索另一个用户实体而不是用于身份验证的用户实体?

谢谢

1 个答案:

答案 0 :(得分:0)

您是否使用FOSCommentsBundle尝试了FOSUserBundle integration

你需要像这样实现SignedCommentInterface。

<?php
// src/MyProject/MyBundle/Entity/Comment.php

namespace MyProject\MyBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use FOS\CommentBundle\Entity\Comment as BaseComment;
use FOS\CommentBundle\Model\SignedCommentInterface;
use Symfony\Component\Security\Core\User\UserInterface;

/**
 * @ORM\Entity
 */
class Comment extends BaseComment implements SignedCommentInterface
{
    // .. fields

    /**
     * Author of the comment
     *
     * @ORM\ManyToOne(targetEntity="MyProject\MyBundle\Entity\User")
     * @var User
     */
    protected $author;

    public function setAuthor(UserInterface $author)
    {
        $this->author = $author;
    }

    public function getAuthor()
    {
        return $this->author;
    }

    public function getAuthorName()
    {
        if (null === $this->getAuthor()) {
            return 'Anonymous';
        }

        return $this->getAuthor()->getUsername();
    }
}