SonataAdminBundle フォーム内で現在の認証済みユーザーを設定しようとしています。
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('title')
->add('content')
->add('slug')
//->add('user')
;
}
ユーザーに自分のユーザーを選択/選択させたくないので、フォームがユーザーから送信された手順でユーザー名を設定したいと思います(ユーザーオブジェクトなし)。(注:これをいくつかの形式で使用したいので、一般的な解決策が必要です。)
私が今行ったことは、これを読んだ後に EventListener をセットアップすることでした: http://symfony.com/doc/current/cookbook/service_container/event_listener.html
class PostListener
{
protected $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public function prePersist(LifeCycleEventArgs $args)
{
$entity = $args->getEntity();
//Get user
$securityContext = $this->container->get('security.context');
$user = $securityContext->getToken()->getUser();
//Set authenticated user as autor
$entity->setUser($user);
}
}
含むサービス:
post.listener:
class: Backender\BlogBundle\Listener\PostListener
calls:
- [ setContainer, [ @service_container ] ]
tags:
- { name: doctrine.event_listener, event: prePersist }
ユーザーを設定するフォームを指定したくないため、これが正しいアプローチであるかどうかはわかりません。(これは、すべてのフォームでユーザーを設定したいでしょう?)
さらに調査すると、次のような Event Subscriber を使用する必要があるようです: http://symfony.com/doc/2.0/cookbook/form/dynamic_form_generation.html この例では、FormEvents::PRE_SET_DATA を使用しています。私の場合、POST_SET_DATA を使用する必要があります。
ここで私はいくつかの問題を抱えています!:
1: 私は SonataAdminBundle の初心者で、保護された関数 configureFormFields(FormMapper $formMapper) を使用しています...どこ->addEventSubscriber()
で利用できませんか?
2: これは正しい方法ですか?、sonata-admin に必要な例は本当に見つかりませんでした。
私はすべての助けに感謝しています! よろしくお願いします...