3
  • 我按照 FOSUserBundle 文档(文档)和 FR3DLdapBundle(文档) 中的说明进行操作
    • FOSUserBundle 需要扩展 BaseUser 类,而 FR3DLdapBundle 需要 User 类来实现LdapUserInterface接口
    • 在我的情况下,这会导致这样的类:

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use FR3D\LdapBundle\Model\LdapUserInterface;

/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser implements LdapUserInterface
{

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

private $dn;

/**
 * the constructor
 */
public function __construct() {
    parent::__construct();
    // your own logic
}

/**
 * {@inheritDoc}
 */
public function getDn() {
    return $this->dn;
}

/**
 * {@inheritDoc}
 */
public function setDn($dn) {
    $this->dn = $dn;
}

}
  • 如果我通过 php app/console 学说更新我的架构:schema:update --em=someEm Doctrine 会插入新表。但是它只插入 id 列,而不是继承的列
  • 我不知道这是 FOSUserBundle 错误还是 FR3DLdapBundle 错误
  • 如果我完全删除 FR3DLdapBundle 部分,它也不起作用
  • 因此我认为这是 FOSUserBundle 中的某种错误
  • 有人有想法吗?

提前非常感谢!

4

1 回答 1

13

FOSUserBundle 现在处于过渡状态,因此它在一定程度上取决于您拥有的版本。

你可能需要:

use FOS\UserBundle\Entity\User as BaseUser;  // Note Entity instead of Model

获取基本属性。他们正在将事情转移到模型上,这解释了为什么您可能在文档中看到了模型\用户。但是还没有稳定的发布。

您可以尝试将 composer.json 更改为:“friendsofsymfony/user-bundle”:“dev-master”,然后进行更新。或者,如果您已经在使用 dev-master,则只需进行更新。

之后模型基础应该可以工作。但是,您的其他一些代码可能会停止工作。

现在一切都非常不稳定。

当然,您还必须正确设置学说映射:

           mappings:
                FOSUserBundle: ~
                MyBundle: ~

但我假设你有这个,因为你在尝试添加 Ldap 之前首先让 FOSUserBundle 工作。你做对了吗?

于 2013-08-02T15:57:09.513 回答