SonataUser - 扩展管理员

Pie*_*NAY 6 php symfony symfony-sonata sonata-admin

我正在尝试修改User实体的默认管理员.
只需要从表单中删除某些字段.

我想这个文档对我来说将是有用的.
现在我已创建此管理员并尝试覆盖默认管理员User.

应用程序/应用/索纳塔/ UserBundle /管理/型号/ UserAdmin.php

namespace Application\Sonata\UserBundle\Admin\Model;

use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\UserBundle\Admin\Model\UserAdmin as BaseType;

class UserAdmin extends BaseType
{
    /**
     * {@inheritdoc}
     */
    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper
            ->addIdentifier('username')
            ->add('groups')
            ->add('enabled')
        ;
    }

    /**
     * {@inheritdoc}
     */
    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
            ->with('General')
                ->add('username')
                ->add('email')
                ->add('plainPassword', 'text', array('required' => false))
            ->end()
            ->with('Groups')
                ->add('groups', 'sonata_type_model', array('required' => false))
            ->end()
            ->with('Profile')
                ->add('firstname', null, array('required' => false))
                ->add('lastname', null, array('required' => false))
            ->end()
        ;
    }

    /**
     * {@inheritdoc}
     */
    public function preUpdate($user)
    {
        $this->getUserManager()->updateCanonicalFields($user);
        $this->getUserManager()->updatePassword($user);
    }

    /**
     * @return UserManagerInterface
     */
    public function getUserManager()
    {
        return $this->userManager;
    }

}
Run Code Online (Sandbox Code Playgroud)

应用程序/配置/ config.yml

services:
    sonata.admin.extension:
        class: Application\Sonata\UserBundle\Admin\Model\UserAdmin
        tags:
            - { name: sonata.admin.extension, target: sonata.user.admin.user }
        arguments: [null, Sonata\UserBundle\Entity\User, SonataUserBundle:UserAdmin]
Run Code Online (Sandbox Code Playgroud)

但我得到了

无法导入资源"/ var/www/Symfony/app/config /." 来自"/var/www/Symfony/app/config/routing.yml".
...
ErrorException:Catchable致命错误:传递给Sonata\AdminBundle\Admin\Admin :: addExtension()的参数1必须是Sonata\AdminBundle\Admin\AdminExtensionInterface的实例,Application\Sonata\UserBundle\Admin\Model \的实例UserAdmin给出,在3139行的/var/www/Symfony/app/cache/dev/appDevDebugProjectContainer.php中调用,并在/var/www/Symfony/vendor/bundles/Sonata/AdminBundle/Admin/Admin.php第2359行中定义

我究竟做错了什么 ?

Adr*_*ult 1

更改服务定义中的标签

tags:
    - { name: sonata.admin, manager_type: orm, group: some.menu, label: User }
Run Code Online (Sandbox Code Playgroud)