如何在 showMapper 中更新对象中的字段

How to update a field in the object within the showMapper

我正在奏鸣曲中创建一个联系人数据库区域,我在实体上有一个 'read' 标志。当用户点击实体的显示操作时,我希望将此读取标志设置为 true。我在 Sonata 的 showMapper 中看不到任何允许这样做的事件。

有人设法做到这一点,或者知道这是否可行?

$showMapper
    ->add('name')
    ->add('subject')
    ->add('message')
    ->add('email','email');

虽然我没有显示读取标志,但我希望它在调用 showMapper 时自动设置为 true。

谢谢

我找到了一个答案,奏鸣曲会在所有不同类型的管理员配置上触发事件,其中一个事件称为 'sonata.admin.event.configure.show' 这是在编辑或显示管理员时触发的。

这非常适合我的需要,所以我创建了一个侦听器来侦听该事件,然后在其中进行实体编辑。

唯一的限制是它会在所有 edit/shows 上触发,所以我需要在监听器中检查它是哪个管理员,如果不是我想要的管理员则打折 - 很好地解决这个问题。