我使用 Extension Builder 在 TYPO3 v4.5 中进行了扩展。现在我有一些没有创建/更新功能的表,因为它们不会经常更改(每月仅一次)。要更改它们,我想使用 TYPO3 中的列表视图。
那行得通,我可以创建和更新我的记录。但如果我有一条记录,它与另一条记录有关系,我可以简单地删除它。另一条记录现在具有无效值。
例如:
Books
_________________________
| Name | AuthorID |
-------------------------
|Harry Potter | 1 |
-------------------------
Author
_________________________
| ID | Name |
-------------------------
| 1 | Rowling |
-------------------------
现在,如果我删除罗琳,我的 AuthorID 字段中有“无效值”。我可以防止这种情况吗?
编辑:好的,我找到了一种可以防止这种情况的方法:我必须在 TCE 中为我的扩展使用 predb 钩子。但是如果我删除一条记录,这段代码(仅用于试验)不起作用。我以为我会得到一个名为“已删除”的数组元素,其值为 1。但它没有出现。其他数据(如果我更改信息或创建新记录)出现。
/**
* @param string $status
* @param string $table
* @param int $id
* @param array $fieldArray
* @param tce_main $tcemain
*/
function processDatamap_postProcessFieldArray($status, $table, $id, &$fieldArray, &$tcemain) {
$fp = fopen('../../typo3conf/ext/test/hooks/output.txt', 'w');
for ($x = 0; $x < sizeof($fieldArray); ++$x)
{
fwrite($fp, "key: ".key($fieldArray)."\tvalue: ".current($fieldArray)."\n");
next($fieldArray);
}
fclose($fp);
}
EDIT2:就像第一个答案中的评论一样,我可以使用 status == delete 检查typo3 是否要删除记录。但是,如果我无法更改已删除属性中的数据(因为它不在 fieldArray 中),如何防止这种情况发生?任何人的线索?
感谢阿加什·塔莫的回复。