使用SonataAdminBundle对实体进行自定义删除处理

alt*_*aus 2 symfony symfony-sonata sonata-admin

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

现在很容易替换Admin类中的delete方法,但是我在批处理操作方面遇到了一些问题.创建子包以修改常规或在我眼中的CRUDController类中创建新方法是没有多大意义的.

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

这会是一个干净的解决方案吗?这种逻辑在很多地方传播都是一种遗憾.:/

干杯马蒂亚斯

Pic*_*oss 7

您可以使用SoftDeleteable教义行为

安装Gedmo Doctrine2扩展包

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

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经将它与Sonata一起使用了,它运行正常