Mar*_*hli 0 symfony symfony-2.1 sonata-admin
我尝试在SonataAdminBundle表单中设置当前经过身份验证的用户:
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('title')
->add('content')
->add('slug')
//->add('user')
;
}
Run Code Online (Sandbox Code Playgroud)
由于我不希望用户选择/选择自己的用户,因此我想在用户发送表单(没有任何用户对象)的过程中设置用户名。(注意:我想以几种形式使用它,所以我需要一个通用的解决方案。)
我现在做的是在阅读以下内容后设置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);
}
}
Run Code Online (Sandbox Code Playgroud)
包括服务:
post.listener:
class: Backender\BlogBundle\Listener\PostListener
calls:
- [ setContainer, [ @service_container ] ]
tags:
- { name: doctrine.event_listener, event: prePersist }
Run Code Online (Sandbox Code Playgroud)
现在不确定这是否正确,因为我不想在要设置用户的地方指定表单。(这个人想在每个表格上设置用户吗?)
经过更多研究,似乎我必须使用这样的事件订阅服务器: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:这是正确的方法吗?,我真的没有找到像我在此进行奏鸣曲管理所需要的示例。
感谢您的帮助!最好的祝福...
试试看 $formMapper->getFormBuilder()->addEventSubscriber($subscriber);