1。创建一个新包
类似 AcmeUserBundle 的东西。像往常一样创建并注册它。
2。创建一个新的用户实体
然后创建一个扩展Sonata\UserBundle\Entity\BaseUser 和Sonata\UserBundle\Entity\BaseGroup 的User 和Group 实体。您还应该添加主键的配置,例如:
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
}
3。配置实体
然后,转到您的 app/config/config.yml 文件并配置这些新实体:
sonata_user:
class:
user: Acme\UserBundle\Entity\User
group: Acme\UserBundle\Entity\Group
4。覆盖 UserAdmin 类
然后,您需要创建一个新的 UserAdmin 类。为此,只需在您的包中创建一个新的 UserAdmin 类,扩展 Sonata\UserBundle\Admin\Model\UserAdmin 并覆盖如下方法:
namespace Acme\UserBundle\Admin;
use Sonata\UserBundle\Admin\Model\UserAdmin as SonataUserAdmin;
class UserAdmin extends SonataUserAdmin
{
/**
* {@inheritdoc}
*/
protected function configureFormFields(FormMapper $formMapper)
{
parent::configureFormFields($formMapper);
$formMapper
->with('new_section')
->add(...)
// ...
->end()
;
}
}
5。替换旧的 UserAdmin 类
然后,您需要确保 Sonata 使用新的 UserAdmin 类。您只需将sonata.user.admin.user.class 参数设置为您的新类并准备好!
# app/config/config.yml
parameters:
sonata.user.admin.user.class: Acme\UserBundle\Admin\UserAdmin