在Symfony中删除对象时如何删除所有关联的安全条目?

时间:2014-08-03 08:08:31

标签: php symfony acl

我正在开发一个简单的任务管理器项目,并使用Symfony的内置ACL系统来处理对我的域对象(任务)的访问。在Symfony文档here中描述了授予用户访问特定对象并检查用户是否有权对对象执行任何操作的过程,但我无法找到有关如何分离与之关联的ACL条目的任何信息。删除对象的对象。现在,当我删除一个对象时(我还没有为此创建一个控制器,并直接在phpmyadmin中执行) 与其关联的acl_object_identitiesacl_entries保持不变,显然它们也应该下降。我如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

如果有人面临类似的麻烦,这是我在深入研究Symfony类api参考后最终解决的问题:

    //...
    $em->remove($task);

    //retrieving object's Object Identity
    $strat = new ObjectIdentityRetrievalStrategy();
    $taskObjectIdentity = $strat->getObjectIdentity($task);

    $aclProvider = $this->get('security.acl.provider');
    $aclProvider->deleteAcl($taskObjectIdentity);

    $em->flush();