3

SonataUser と SonataAdmin で FOSUser を使用しています。また、Sonata で FOS を使用する場合、いくつかのチュートリアルで説明されているように、SonataEasyExtends を使用して app/Application/Sonata/UserBundle を作成しました。

たとえば、ソーシャルのもの(facebook、twitterなど)のようなユーザーエンティティの管理フォームからいくつかのデフォルトフィールドを削除したいだけです。

入れてフォームをオーバーライドしようとしました

#app/Application/Sonata/UserBundle/Admin/Model/UserAdmin.php

namespace Application\Sonata\UserBundle\Admin\Model;

use Sonata\UserBundle\Admin\Model\UserAdmin as UserAdmin;

class MyUserAdmin extends UserAdmin
{
    /**
     * {@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()
        ;

        if (!$this->getSubject()->hasRole('ROLE_SUPER_ADMIN')) {
            $formMapper->with('Management')
                ->add('roles', 'sonata_security_roles', array(
                    'expanded' => true,
                    'multiple' => true,
                    'required' => false
                ))
                ->add('locked', null, array('required' => false))
                ->add('expired', null, array('required' => false))
                ->add('enabled', null, array('required' => false))
                ->add('credentialsExpired', null, array('required' => false))
            ->end();
        }

        $formMapper
            ->with('Security')
                ->add('token', null, array('required' => false))
                ->add('twoStepVerificationCode', null, array('required' => false))
            ->end();
    }
}

これをサービスとして登録し、Sonata にデフォルトで使用するように指示する必要があると思います。

しかし、私はそれを行う方法がわかりません。

私は少なくとも正しい軌道に乗っていますか?

4

2 に答える 2

1

Sonata User Admin のフォームは自動的に上書きされません。

Thomas Rabaixによると、sonata に新しい管理インスタンスを使用するように指示する必要があります。

#app/config/config.yml
services:
    vendor.admin.extens:
        class: Application\Sonata\ProductBundle\Admin\ProductAdmin
        tags:
            - { name: sonata.admin.extens, target: sonata.product.admin.product }
于 2012-07-11T09:29:53.137 に答える