0

我使用 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 中),如何防止这种情况发生?任何人的线索?

感谢阿加什·塔莫的回复。

4

1 回答 1

0

您可以简单地覆盖存储库中的删除方法并检查是否存在对其他对象的引用。

于 2013-03-18T12:46:14.177 回答