我想从TYPO3后端的列表视图中删除我的一个Extbase域对象时执行一些单独的代码。TYPO3 Extbase对象的后端删除单个代码
原以为它可以/将通过覆盖在根据库中的remove($o)
方法工作像
public function remove($object) {
parent::__remove($object);
do_something_i_want();
}
,但不会工作,我猜。看起来版本库方法只是由我的扩展的动作调用/使用(例如,如果我在FE或BE插件中有一些删除操作),而不是在后端的列表视图中刚刚删除对象时才使用?我没有使用(到现在为止)任何FE/BE-plugin/-actions - 我的存储文件夹的后端列表视图中只有简单的添加/编辑/删除功能。
背景:我有两个模型与一些1:n关系(比如说singer
和song
),其中一个对象包含一些上传的文件(album_cover
>指向/uploads/myext/
文件夹中的文件的URL);使用@cascade
适用于删除属于singer
的每个song
,但它不会触及仅上传(仅)song.album_cover
的文件 - 这会导致相当多的浪费。所以我喜欢做一些onDeletionOfSinger() { deleteAllFilesForHisSongs(); }
东西。 (同样的事情也适用于缺失,让我们说一个song
和它的album_cover
-file。)
听起来很容易&常见的,但我只是不明白它背后并没有发现任何有用的 - 也许需要一些提示/指向正确的方向:-)。
谢谢您的回答和不错的提示 - 工作得很好。只是花了我一段时间才得到Doc-params记录/ recordWasDeleted后面的假设,以便在寻找正确的方式从记录中获得所需的文件名/值以进一步处理(例如删除图像)时不适合实际参数。 - )。但是使用'\ TYPO3 \ CMS \ Backend \ Utility \ BackendUtility :: getRecord('my_table',$ id,'field_or_fields_needed','',false)'似乎工作正常。而且 - 也许你想为其他人编辑:当事情被调用时,记录已经设置为“del”,因此不需要像建议的那样自己删除代码。 – Falcon2014 2014-09-01 16:22:33
只适用于具有类似场景的人:钩子不会“应用”级联删除(在我的示例中,例如删除艺术家时删除歌曲),因此您必须从父视图中记住相关的子节点(删除动作是在'parent_table'上执行的,因为'child_table'检查上的删除仅适用于在后端删除子级时的情况,而不是在级联删除的情况下,如果删除时有任何事情发生, – Falcon2014 2014-09-01 19:47:46