【问题标题】:Custom delete handling for an entity using SonataAdminBundle使用 SonataAdminBundle 对实体进行自定义删除处理
【发布时间】:2013-07-02 06:13:28
【问题描述】:

我想实现一些自定义删除处理。我们有一些类型的实体,它们只会在数据库中被标记为已删除。真正从数据库中删除是由预定的进程完成的。

现在可以很容易地替换 Admin 类中的删除方法,但是批处理操作存在一些问题。在我看来,创建一个子包来修改通用或在 CRUDController 类中创建一个新方法没有多大意义。

所以我倾向于创建一个自定义 ModelManager(基于 DoctrineORMAdminBundle 之一)并将业务逻辑放入其中。我找不到关于这部分的任何文档。

这是一个干净的解决方案吗?有点可惜,逻辑传播到这么多地方。 :/

干杯 马蒂亚斯

【问题讨论】:

    标签: symfony sonata-admin symfony-sonata


    【解决方案1】:

    您可以使用SoftDeleteable doctrine behavior

    安装Gedmo Doctrine2 extensions bundle

    安装和配置捆绑包后,更新您的实体以添加软删除行为:

    namespace Entity;
    
    use Gedmo\Mapping\Annotation as Gedmo;
    use Doctrine\ORM\Mapping as ORM;
    
    /**
     * @ORM\Entity
     * @Gedmo\SoftDeleteable(fieldName="deletedAt")
     */
    class Article
    {
    
        # ...
    
        public function getDeletedAt()
        {
            return $this->deletedAt;
        }
    
        public function setDeletedAt($deletedAt)
        {
            $this->deletedAt = $deletedAt;
        }
    }
    

    我已经在奏鸣曲中使用过,效果很好

    【讨论】:

    • 感谢捆绑包的提示。我已经在另一个项目中使用了扩展,但不知何故错过了 SoftDeleteable。另一方面,我真的很想知道如何使用 SonataAdminBundle 来解决这个问题。我仍在评估它是否适合我们非常具体的 CRUD 需求,或者我们是否从头开始。
    • @Picoss Sonata 管理员如何取消删除已删除的内容。基本上我想实现存档/取消存档功能的任何想法。我已经使用 softedelete 删除了元素,现在我希望取消删除是否有任何内置内容我错过了
    • @wilsonrufus 检查我的包 SonataExtraAdminBundle 如何使用垃圾管理器:github.com/picoss/SonataExtraAdminBundle/blob/master/Resources/…
    猜你喜欢
    • 2022-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 2020-03-07
    • 2012-02-03
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多