编辑默认的SonataUserBundle用户实体

时间:2016-04-06 08:52:46

标签: symfony sonata-admin sonata-user-bundle

我在没有扩展FOSUserBundle的情况下使用SonataUserBundle。我想更改默认的SonataUser实体,并添加或删除一些字段。

这是使用SonataEasyExtendsBundle

创建的默认用户实体
display: block

2 个答案:

答案 0 :(得分:1)

我认为您可以像添加任何其他实体一样添加字段,方法和映射,但我担心您无法删除字段(但您可以在自定义管理中隐藏它们)。映射文件位于Application目录中。

答案 1 :(得分:0)

好的,找到解决方案,如果有人有这个问题,这可以解决它

这些是程序:

    在通过User扩展SonataEasyExtends实体后,
  1. 删除了教条目录默认情况下,您可以在Application/Sonata/UserBundle/Resources/config/doctrine
  2. 中找到它
  3. 配置User实体以满足您的需求,这也在您的Application文件夹中。在添加或删除任何内容之前,您的User实体必须是这样的:
  4. namespace Application\Sonata\UserBundle\Entity;
    
    use Doctrine\ORM\Mapping as ORM;
    use Sonata\UserBundle\Entity\BaseUser as BaseUser;
    
    /**
     * User
     *
     * @ORM\Table(name="fos_user_user")
     * @ORM\Entity
     */
    class User extends BaseUser
    {
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        protected $id;
    
        /**
         * Get id
         *
         * @return int $id
         */
        public function getId()
        {
            return $this->id;
        }
    
        public function __toString()
        {
            if (parent::getFirstname() != null){
                return parent::getFullname();
            } else {
                return parent::getUsername();
            }
        }
    }
    
    1. 生成管理类,仅使用app/console sonata:admin:generate Application/Sonata/UserBundle/Entity/User

    2. 覆盖管理类,轻松将UserAdmin.php的{​​{1}}复制并粘贴到新创建的管理类

      < / LI>

      <强>可选

      1. 可以通过将Sonata\UserBundle\Admin\ModelUserAdmin:182更改为if ($this->getSubject() && !$this->getSubject()->hasRole('ROLE_SUPER_ADMIN'))
      2. 来修复此issue #418