我在Symfony2.1应用程序中使用自定义UserProvider进行身份验证。我想使用FOSCommentBundle来实现评论。但是当评论作者对评论进行签名时,我被困住了。
基本上,我有两个数据库。我可以从中检索用户的凭据(用户名,盐,密码......)但我无法进行任何修改,另一个我可以用来存储用户信息(如她/他的评论) )在用户实体中。
当我将Comment实体映射到此User实体时,由于FOSCommentBundle检索实现UserInterface的实体(在我的安全包中)而不是此User实体,因此存在问题。
基本上,有没有办法告诉FOSCommentBundle检索另一个用户实体而不是用于身份验证的用户实体?
谢谢
答案 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();
}
}