Sonata Admin - 将securityContext注入Admin类

时间:2013-09-18 08:50:55

标签: mongodb symfony fosuserbundle sonata-admin symfony-sonata

我需要在模型的某些字段中写入已登录用户的名称(我有父文档和一些嵌入文档)

我在管理类

中注入了安全上下文
calls:
    - [ setTranslationDomain, [QMAdminBundle]]
    - [ setSecurityContext, [@security.context]]

然后我写了我的setSecurityContext

public function setSecurityContext($securityContext) {
    $this->securityContext = $securityContext;
}

public function getSecurityContext() {
    return $this->securityContext;
}

public function prePersist($appunto) {
    $user = $this->getSecurityContext()->getToken()->getUser();
    $appunto->setOperatore($user->getUsername());
}

不幸的是它没有写用户...也许这是因为我有一个父文档(我不需要写用户)和一些嵌入文档(我想写用户的地方)我在父母表格中显示(请参见图片)?

我使用fosuserbundle,以及(easy-)扩展奏鸣曲用户的捆绑包:我必须使用它们来获取用户?

您有什么建议可以解决这个问题吗?

非常感谢

form with embedded documents

1 个答案:

答案 0 :(得分:1)

如果你写

$appunto->setOperatore($user->getUsername());

prePersist函数中,只有在按下保存按钮之后,它才会保存在内存中。

尝试在__constructor()函数中的appunto对象上设置运算符,它将在appunto对象中显示用户名。

请记住,您必须为每个子对象设置用户 比如$appunto->getSubObject()->setOperatore($user);