log \ history的EventListeners。 Doctrine2,Symfony

时间:2018-03-16 14:47:37

标签: symfony logging doctrine-orm history event-listener

我想制作自定义日志\历史记录,以便跟踪发生的情况。我有这样的实体:

  

- 类别

     

-Item

     

-AttrValue

     

-attributes

所有这些都是这样的: enter image description here 我读了它并决定使用EventListeners并使用doctrine将事件写入表中。您不需要提供使用波段进行日志记录/审核,实质是您不需要它们就可以完成的任务。因此,我确定了实现这一目标的步骤:

  1. 使用以下字段创建新实体:
  2.   

    -Time(When);

         

    - 什么(发生的动作,例如,创建,更新,查看或删除记录);

         

    -OldValue(如果存在);

         

    -NewValue(如果存在);

    1. 使用prePersist,preUpdate和preRemove创建一个新的EventListener。
    2. 创建一个方法,该方法将与Doctrine一起使用并从第1项中写入值(类似buildLog (LifecycleEventArgs $args, $type),其中$type是一个操作(创建,更新或删除)。
    3. 因此,我有这样的问题: 1.我可以将EventListeners用于我想做的事情吗? 2.如果是这样,我是否正确描述了行动的顺序? (在services.yml中定义EventListeners我不考虑) 3.如何确定发生了什么动作? (我将在下面附上我的路由文件) 4.如何将这一切用于多个实体?这样的东西适合吗?

      $ entity = $ args-> getEntity ();
      
      1. 可以在某处实现类似的实现,以便您可以阅读吗? 我的路由:

        getAllCategory:     路径:/ category     方法:[GET]     默认值:{_ control:AppBundle:Catalog:getAllCategory}

        的getCategory:     路径:/ category / {id}     方法:[GET]     默认值:{_ control:AppBundle:Catalog:getCategory}

        postCategory:     路径:/ category     方法:[POST]     默认值:{_ control:AppBundle:Catalog:postCategory}

        updateCategory:     路径:/ category     方法:[补丁]     默认值:{_ control:AppBundle:Catalog:updateCategory}

        deleteCategory:     路径:/ category / {id}     方法:[删除]     默认值:{_ control:AppBundle:Catalog:deleteCategory}

        getAllItem:     路径:/ items     方法:[GET]     默认值:{_ console:AppBundle:Item:getAllItems}

        的getItem:     路径:/ item / {id}     方法:[GET]     默认值:{_ console:AppBundle:Item:getItem} postItem:     路径:/ item     方法:[POST]     默认值:{_ control:AppBundle:Item:postItem}

        的updateItem:     路径:/ item     方法:[补丁]     默认值:{_ console:AppBundle:Item:updateItem}

        deleteItem:         路径:/ item / {id}         方法:[删除]         默认值:{_ control:AppBundle:Item:deleteItem}

0 个答案:

没有答案