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 にデフォルトで使用するように指示する必要があると思います。
しかし、私はそれを行う方法がわかりません。
私は少なくとも正しい軌道に乗っていますか?