Extension Builder を使用して、TYPO3 v4.5 で拡張機能を作成しました。現在、作成/更新機能を持たないテーブルがいくつかあります。これは、あまり頻繁に変更されないためです (月に 1 回のみ)。それらを変更するには、TYPO3 でリスト ビューを使用したいと考えています。
それは機能します。レコードを作成および更新できます。しかし、他のレコードと関連しているレコードがある場合は、簡単に削除できます。もう一方のレコードには無効な値が含まれています。
例えば:
Books
_________________________
| Name | AuthorID |
-------------------------
|Harry Potter | 1 |
-------------------------
Author
_________________________
| ID | Name |
-------------------------
| 1 | Rowling |
-------------------------
Rowling を削除すると、AuthorID フィールドに「無効な値」が表示されます。これを防ぐことはできますか?
編集: わかりました、これを防ぐ方法を見つけました: 拡張機能の TCE で predb フックを使用する必要があります。しかし、このコード (実験用のみ) は、レコードを削除すると機能しません。値が 1 の「deleted」という名前の配列要素を取得すると思ったのですが、表示されません。他のデータ (情報を変更したり、新しいレコードを作成した場合) が表示されます。
/**
* @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 を使用して、typ3 がレコードを削除するかどうかを確認できます。しかし、削除された属性のデータを変更できない場合 (fieldArray にないため)、どうすればこれを防ぐことができますか? 手がかりはありますか?
回答ありがとうございます。