我在没有扩展FOSUserBundle的情况下使用SonataUserBundle。我想更改默认的SonataUser实体,并添加或删除一些字段。
这是使用SonataEasyExtendsBundle
创建的默认用户实体display: block
答案 0 :(得分:1)
我认为您可以像添加任何其他实体一样添加字段,方法和映射,但我担心您无法删除字段(但您可以在自定义管理中隐藏它们)。映射文件位于Application
目录中。
答案 1 :(得分:0)
好的,找到解决方案,如果有人有这个问题,这可以解决它
这些是程序:
User
扩展SonataEasyExtends
实体后,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();
}
}
}
生成管理类,仅使用app/console sonata:admin:generate Application/Sonata/UserBundle/Entity/User
覆盖管理类,轻松将UserAdmin.php
的{{1}}复制并粘贴到新创建的管理类
<强>可选强>
Sonata\UserBundle\Admin\Model
从UserAdmin:182
更改为if ($this->getSubject() && !$this->getSubject()->hasRole('ROLE_SUPER_ADMIN'))