编辑默认的 SonataUserBundle 用户实体
Editing default SonataUserBundle user entity
我使用的是 SonataUserBundle 而没有扩展 FOSUserBundle。我想更改默认的 SonataUser 实体,并添加或删除一些字段。
这是使用 SonataEasyExtendsBundle 创建的默认用户实体
<?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();
}
}
}
我认为您可以像添加任何其他实体一样添加字段、方法和映射,但恐怕您无法删除字段(但您可以将它们隐藏在自定义管理中)。映射文件在您的 Application
目录中。
好的,找到解决方案了,如果有人遇到这个问题,这可以解决它
这些是程序:
- 通过
SonataEasyExtends
扩展 User
实体后,删除学说目录。 默认情况下,您可以在 Application/Sonata/UserBundle/Resources/config/doctrine
中找到它
- 配置
User
实体以满足您的需求,这也在您的 Application
文件夹中。在添加或删除任何内容之前,您的 User
实体必须是这样的:
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();
}
}
}
生成管理员 Class,只需使用 app/console sonata:admin:generate Application/Sonata/UserBundle/Entity/User
覆盖管理员 Class,轻松将 UserAdmin.php
从 Sonata\UserBundle\Admin\Model
复制并粘贴到您新创建的 管理员Class
可选
- 有一个 issue #418 可以通过将
UserAdmin:182
从 if ($this->getSubject() && !$this->getSubject()->hasRole('ROLE_SUPER_ADMIN'))
更改为 if ($this->getSubject() && $this->getSubject()->hasRole('ROLE_SUPER_ADMIN'))
来解决
我使用的是 SonataUserBundle 而没有扩展 FOSUserBundle。我想更改默认的 SonataUser 实体,并添加或删除一些字段。
这是使用 SonataEasyExtendsBundle 创建的默认用户实体
<?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();
}
}
}
我认为您可以像添加任何其他实体一样添加字段、方法和映射,但恐怕您无法删除字段(但您可以将它们隐藏在自定义管理中)。映射文件在您的 Application
目录中。
好的,找到解决方案了,如果有人遇到这个问题,这可以解决它
这些是程序:
- 通过
SonataEasyExtends
扩展User
实体后,删除学说目录。 默认情况下,您可以在Application/Sonata/UserBundle/Resources/config/doctrine
中找到它
- 配置
User
实体以满足您的需求,这也在您的Application
文件夹中。在添加或删除任何内容之前,您的User
实体必须是这样的:
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();
}
}
}
生成管理员 Class,只需使用
app/console sonata:admin:generate Application/Sonata/UserBundle/Entity/User
覆盖管理员 Class,轻松将
UserAdmin.php
从Sonata\UserBundle\Admin\Model
复制并粘贴到您新创建的 管理员Class
可选
- 有一个 issue #418 可以通过将
UserAdmin:182
从if ($this->getSubject() && !$this->getSubject()->hasRole('ROLE_SUPER_ADMIN'))
更改为if ($this->getSubject() && $this->getSubject()->hasRole('ROLE_SUPER_ADMIN'))
来解决