Symfony 编辑默认用户实体

Symfony 编辑默认用户实体,symfony,sonata-admin,sonata-user-bundle,Symfony,Sonata Admin,Sonata User Bundle,我使用的是SonataUserBundle,没有扩展FOSUserBundle。我想更改默认的SonataUser实体,并添加或删除一些字段 以下是使用SonateAsysExtendSbundle创建的默认用户实体 <?php /** * This file is part of the <name> project. * * (c) <yourname> <youremail> * * For the full copyright and

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

以下是使用SonateAsysExtendSbundle创建的默认用户实体

<?php

/**
 * This file is part of the <name> project.
 *
 * (c) <yourname> <youremail>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Application\Sonata\UserBundle\Entity;

use Sonata\UserBundle\Entity\BaseUser as BaseUser;

/**
 * This file has been generated by the Sonata EasyExtends bundle.
 *
 * @link https://sonata-project.org/bundles/easy-extends
 *
 * References :
 *   working with object : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en
 *
 * @author <yourname> <youremail>
 */
class User extends BaseUser
{
    /**
     * @var int $id
     */
    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();
        }
    }
}

我认为您可以像添加任何其他实体一样添加字段、方法和映射,但恐怕您无法删除字段(但您可以将其隐藏在自定义管理员中)。映射文件在您的
应用程序的
目录中。

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

程序如下:

  • 通过
    SonataEasyExtends
    扩展
    用户
    实体后,删除条令目录
    。默认情况下,您可以在
    Application/Sonata/UserBundle/Resources/config/doctor
  • 配置
    用户
    实体以满足您的需求
    ,这也在您的
    应用程序
    文件夹中。在添加或删除任何内容之前,您的
    用户
    实体必须如下所示:
  • 生成管理类,只需使用
    app/console-sonata:Admin:Generate-Application/sonata/UserBundle/Entity/User

  • 覆盖管理类,轻松将
    UserAdmin.php
    Sonata\UserBundle\Admin\Model
    复制并粘贴到新创建的管理类

  • 可选

  • 通过将
    UserAdmin:182
    if($this->getSubject()&&!$this->getSubject()->hasRole('ROLE\u SUPER\u ADMIN'))
    更改为
    if($this->getSubject()&&$this->getSubject()->hasRole('ROLE\u SUPER\u ADMIN'))

  • 谢谢,但是在编辑User.php实体并调用
    doctrine:generate:entities应用程序之后,没有任何更改!我做错了什么?我不知道,我没有使用
    原则:生成:实体
    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();
            }
        }
    }