我尝试在 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 }
现在不确定这是否是正确的方法,因为我不想指定要设置用户的表单。(这个人想在每个表单上设置用户,对吧?)
通过更多的研究,我似乎必须使用这样的事件订阅者: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:这是正确的方法吗?,我真的没有找到任何像我需要的奏鸣曲管理员的例子。
我感谢每一个帮助!最好的祝福...