我想從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