Ich habe dieses Problem bereits in einem anderen Forum berichtet, aber dort konnte mir niemand helfen. Vielleicht weiss hier jemand, was ich falsch mache.
Für die Intergration externer Tabellen verwende ich DBAL. Dabei bleibt die DB gleich, nur die Tabellen an sich sind bisher Typo3 nicht bekannt gewesen. Der Grund warum ich DBAL verwende, liegt darin, dass die Tabellen keine uid als ID verwenden sondern unterschiedliche Feldbezeichner. Ausserdem gibt es kein Feld für die PageID.
Deshalb habe ich als erstes für alle verwendeten Tabellen die uid per Mapping auf die entsprechenden id Felder umgeleitet und die pid auf einen festen Wert gemappt.
'pre_categories' => array (
'mapTableName' => $confArr['Prefix'] . 'categories',
'mapFieldNames' => array(
'pid' => 24,
'uid' => 'cid',
)
),
In diesem Beispiel verwende ich ein Config Array um die Zuweisungen nicht statisch zu haben, sondern bei jedem Projekt neu zuweisen zu können.
So lange es um die reine Auflistung im List-Modul von Typo3 geht, funktioniert diese Bearbeitung schon ganz gut.
Da ich aber in den Einträgen auch Verweise untereinander habe. wollte ich diese per Selectbox auswählen können. Deshalb habe ich in der TCA.php folgendes für eine der Selectboxen verwendet.
'category' => Array (
'exclude' => 0,
'label' => 'LLL:EXT:my_ext/locallang_tca.xml:objects.category',
'config' => Array (
'type' => 'select',
'items' => Array (
Array ('LLL:EXT:my_ext/locallang_tca.xml:objects.category.nocat', 0),
),
'size' => 1,
'maxitems' => 1,
'foreign_table' => 'pre_categories',
)
),
Doch genau dies läuft auf einen Fehler hinaus. Denn aus irgendeinem Grund wird mir folgender Fehler ausgegeben.
SELECT pre_categories.cid, pre_categories.name
FROM pre_categories, pages
WHERE
pages.uid = pre_categories.pid AND pages.deleted = 0 AND 1 = 1
Unknown column 'pre_categories.pid' in 'where clause'
Warum aber jetzt genau kann ich nicht nachvollziehen, denn eigentlich wurde ja dem Feld pid der feste Wert 24 zugewiesen und wenn es um das List-Modul geht, funktioniert das ganze ja auch.
Ich bin mir auch ziemlich sicher, dass dies ein Fehler der DBAL ist, denn eine ähnliche Selectbox für die FE Groups funktioniert einwandfrei. Nur muss dafür auch kein Mapping herhalten.
'visibility' => Array (
'exclude' => 1,
'label' => 'LLL:EXT:my_ext/locallang_tca.xml:objects.visibility',
'config' => Array (
'type' => 'select',
'items' => Array (
Array ('LLL:EXT:my_ext/locallang_tca.xml:objects.visibility.public', 0),
),
'size' => 1,
'maxitems' => 1,
'foreign_table' => 'fe_groups',
)
),
Hat irgendwer ne Idee, woran es liegen kann?
Habe ich einen Fehler in meinem Code?
Oder ist das einfach eine Aufgabe die DBAL nicht kann?
Wenn ich das Problem nicht behoben kriege, kann ich die gesamte Backend Integration in Typo3 vergessen und die Extention ist in Frage gestellt, denn eine Bearbeitung über ein eigenes Backend Modul macht an dieser Stelle dann keinen Sinn.
Liebe Grüße
Sebastian