Ich befürchte, das die oben genannte Beschreibung des Problems nicht so ganz verständlich war.
Ich versuche dies nochmal zu schildern.
Ich muss eine Backend Extension schreiben, die ein neues Feld "Subtitle" in die Backend Formulare hinzufügt.
Dieses Feld muss ausgefüllt werden (Pflichtfeld), wenn das Feld „Header“ nicht ausgefüllt ist. Wenn das Feld „Header“ ausgefüllt wird, soll das neue Feld kein Pflichtfeld mehr sein.
Grundsätzlich besteht die Möglichkeit Inputfelder als Pflichtfelder über den TCA Eintrag „eval" => "required" zu definieren. Dabei wird die Standardfehlermeldung von TYPO3 ausgegeben.
Mein Problem besteht aber darin, das ich zum einen diese Meldung ändern muss und zum anderen das Feld nur ein „Pflichtfeld“ sein soll, wenn das Feld „Header“ im Backend nicht ausgefüllt wurde.
Mein bisheriger Ansatz bestand darin, eine Backend Extension anzulegen und über die Datei „ext_tables.php“ das Feld mit hinzuzufügen und als Pflichtfeld zu definieren:
PHP-Code:
<?php
if (!defined ('TYPO3_MODE')) die ('Access denied.');
$tempColumns = Array (
"tx_test_test" => Array ( ## WOP:[fields][1][fields][1][fieldname]
"exclude" => 1, ## WOP:[fields][1][fields][1][excludeField]
"label" => "LLL:EXT:test/locallang_db.xml:tt_content.tx_test_test", ## WOP:[fields][1][fields][1][title]
"config" => Array (
"type" => "input", ## WOP:[fields][1][fields][1][type]
"size" => "30", ## WOP:[fields][1][fields][1][conf_size]
"eval" => "required", ## WOP:[fields][1][fields][1][conf_required]
)
),
);
t3lib_div::loadTCA("tt_content");
t3lib_extMgm::addTCAcolumns("tt_content",$tempColumns,1);
t3lib_extMgm::addToAllTCAtypes("tt_content","tx_test_test;;;;1-1-1");
?>
Zudem habe ich herausgefunden, dass ich darin auch die Zeile:
"eval" => "required",
mit folgender ersetzten kann
"eval" => "tx_test_eval",
und dadurch eine eigens angelegte Datei aufrufen kann. In diesem Fall habe ich die Datei „class.tx_test_eval.php“ erstellt.
In dieser Datei wollte ich die Abfrage erstellen, sowie die Fehlermeldung ausgeben.
Leider habe ich aber Schwierigkeiten, zum einen die Abfrage zu formulieren und zum anderen die Fehlermeldung auszugeben. Ich dachte dabei an folgendes:
1. Wird das Feld „Header“ ausgefüllt, muss das neue Feld „Subtitle“ nicht gefüllt werden --> keine Meldung, sondern der Datensatz soll im Backend normal gespeichert werden.
2. Wird das Feld „Header“ nicht ausgefüllt, muss das neue Feld „Subtitle“ überprüft werden und wenn kein Eintrag vorhanden ist, soll eine Meldung ausgegeben werden: „Dieses Feld muss ausgefüllt werden“. Zudem soll der Datensatz im Backend solange das Feld nicht ausgefüllt wurde nicht gespeichert werden können.
Vielleicht gibt es auch einen anderen Lösungsansatz. Ich bin für jeden Tipp sehr dankbar.