我試圖將FOSUserBundle與FpOpenIDBundle集成,但是當auth被接收時遇到了問題。 我得到錯誤Symfony 2.0帶有OpenID的FOSUserBundle
不支持「Alef \ UserBundle \ Entity \ User」的實例。
我的類看起來像這樣
<?php
namespace Alef\UserBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use FOS\UserBundle\Entity\User as BaseUser;
use FOS\UserBundle\Model\GroupInterface;
use Doctrine\ORM\Mapping as ORM;
/**
* User Entity
*
* @ORM\Entity
* @ORM\Table(name="alef_users")
*
* @author James Morris <[email protected]>
* @package SecurityBundle
*/
class User extends BaseUser implements \FOS\UserBundle\Model\GroupableInterface
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToMany(targetEntity="Alef\UserBundle\Entity\Group")
* @ORM\JoinTable(name="alef_user_groups",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")}
*)
*/
protected $groups;
/**
* @var string
*
* @ORM\Column(name="firstname", type="string", length=255)
*/
protected $firstname;
/**
* @var string
*
* @ORM\Column(name="lastname", type="string", length=255)
*/
protected $lastname;
/**
* @var string
*
* @ORM\Column(name="facebookId", type="string", length=255)
*/
protected $facebookId;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
public function serialize()
{
return serialize(array($this->facebookId, parent::serialize()));;
}
public function unserialize($data)
{
list($this->facebookId, $parentData) = unserialize($data);
parent::unserialize($parentData);
}
/**
* @return string
*/
public function getFirstname()
{
return $this->firstname;
}
/**
* @param string $firstname
*/
public function setFirstname($firstname)
{
$this->firstname = $firstname;
}
/**
* @return string
*/
public function getLastname()
{
return $this->lastname;
}
/**
* @param string $lastname
*/
public function setLastname($lastname)
{
$this->lastname = $lastname;
}
/**
* Get the full name of the user (first + last name)
* @return string
*/
public function getFullName()
{
return $this->getFirstName() . ' ' . $this->getLastname();
}
/**
* @param string $facebookId
* @return void
*/
public function setFacebookId($facebookId)
{
$this->facebookId = $facebookId;
$this->setUsername($facebookId);
$this->salt = '';
}
/**
* @return string
*/
public function getFacebookId()
{
return $this->facebookId;
}
/**
* @param Array
*/
public function setFBData($fbdata)
{
if (isset($fbdata['id'])) {
$this->setFacebookId($fbdata['id']);
$this->addRole('ROLE_FACEBOOK');
}
if (isset($fbdata['first_name'])) {
$this->setFirstname($fbdata['first_name']);
}
if (isset($fbdata['last_name'])) {
$this->setLastname($fbdata['last_name']);
}
if (isset($fbdata['email'])) {
$this->setEmail($fbdata['email']);
}
}
public function __construct()
{
parent::__construct();
$this->facebookId = 0;
}
}
我知道這是繼承問題,因爲FpOpenId繼承原有symfony的安全用戶類,但FOSUSer沒有繼承它。有什麼辦法可以更新FPOpenIDBundle來實際使用它嗎?
注意:如果你想保持你的理智,不要使用fpOpenID了。它沒有被更新一年,它會打破當前的PHP/Symfony2版本,因爲像getExtraInformation()這樣的重要方法已被棄用。 – Tom 2013-10-22 14:36:51