Typo3 Extensions mit IRRE: Unterschied zwischen den Versionen
Aus Wikizone
| Zeile 1: | Zeile 1: | ||
| − | + | ||
| − | # Im Kickstarter Felder in Kindtabellen anlegen (parenttable, parentid -> Typ Passthrough) | + | |
| − | # Im Kickstarter Feld in Elterntabelle anlegen (child[name] -> Typ z.B. Integer) | + | == Übersicht == |
| − | # | + | # Im Kickstarter '''zusätzliche Felder in den Kindtabellen''' anlegen (parenttable, parentid -> Typ Passthrough) |
| + | # Im Kickstarter '''zusätzliches Feld in Elterntabelle''' anlegen (child[name] -> Typ z.B. Integer) | ||
| + | # Backendkonfiguration für die '''Elterntabelle im TCA (tca.php) anpassen'''. | ||
Erläuterung: | Erläuterung: | ||
| − | * '''Kindtabellen''' (n-Tabelle) benötigen die Felder '''parenttable''' und '''parentid''' | + | * '''Kindtabellen''' (n-Tabelle) benötigen die Felder '''parenttable''' und '''parentid'''. In diesen wird auf die Elterntabelle und die uid des Elterndatensatzes verwiesen(weak entity - der Kind Datensatz weiß wohin er gehört). |
| + | * '''Elterntabellen''' enthalten ein Feld das aussagt '''welche Kindtabelle''' dazugehört (siehe Beispiel) Dieses Feld kann im EM als Integer angelegt werden. | ||
** Die Felder parenttable und parentid kann man im Extension Manager als Typ PassThrough anlegen, das werden dann tinytext-Felder angelegt, geht aber trotzdem. | ** Die Felder parenttable und parentid kann man im Extension Manager als Typ PassThrough anlegen, das werden dann tinytext-Felder angelegt, geht aber trotzdem. | ||
* tca.php anpassen | * tca.php anpassen | ||
| − | ** In der tca muß man in den Elterntabellen die Definition für die Kindtabelle anpassen (das Integer Feld). Im Detail ist das der Inhalt des array config(...) und muß als Inline Feld umdeklariert werden z.B.: | + | ** In der tca.php muß man in den Elterntabellen die Definition für die Kindtabelle anpassen (das Integer Feld). Im Detail ist das der Inhalt des array config(...) und muß als '''Inline Feld''' umdeklariert werden z.B.: |
| − | Vorher (Ausschnitt): | + | '''Elterntabelle im tca.php Vorher (Ausschnitt):''' |
<pre> | <pre> | ||
... | ... | ||
| Zeile 32: | Zeile 35: | ||
</pre> | </pre> | ||
| − | Nachher (Ausschnitt): | + | Elterntabelle Nachher (Ausschnitt): |
<pre> | <pre> | ||
$TCA["tx_irrehotel_hotel"] = Array ( | $TCA["tx_irrehotel_hotel"] = Array ( | ||
| Zeile 62: | Zeile 65: | ||
); | ); | ||
</pre> | </pre> | ||
| + | |||
| + | == m:m Verknüpfungen == | ||
| + | m:m Verknüpfungen sind notewendig wenn | ||
| + | |||
| + | == Begriffserklärungen == | ||
| + | ===Datenbankbeziehungen=== | ||
| + | '''Normalisierte 1:n Verknüpfung''' | ||
| + | |||
| + | In der Kindtabelle wird die id des Elternelements angegeben. Auf diese Weise können alle Kindelemente eines Elternelements abgefragt werden. Bei IRRE wird zudem im Kindelement die Elterntabelle mit angegeben. Somit weis das Kindelement welches seine Elterntabelle und welches sein Elterndatensatz ist. Man spricht hier von einer "weak entity" | ||
| + | |||
| + | '''Asymetrische Beziehungen''' | ||
| + | |||
| + | Hierbei sind 2 Tabellen betroffen. | ||
Version vom 8. August 2007, 10:48 Uhr
Übersicht
- Im Kickstarter zusätzliche Felder in den Kindtabellen anlegen (parenttable, parentid -> Typ Passthrough)
- Im Kickstarter zusätzliches Feld in Elterntabelle anlegen (child[name] -> Typ z.B. Integer)
- Backendkonfiguration für die Elterntabelle im TCA (tca.php) anpassen.
Erläuterung:
- Kindtabellen (n-Tabelle) benötigen die Felder parenttable und parentid. In diesen wird auf die Elterntabelle und die uid des Elterndatensatzes verwiesen(weak entity - der Kind Datensatz weiß wohin er gehört).
- Elterntabellen enthalten ein Feld das aussagt welche Kindtabelle dazugehört (siehe Beispiel) Dieses Feld kann im EM als Integer angelegt werden.
- Die Felder parenttable und parentid kann man im Extension Manager als Typ PassThrough anlegen, das werden dann tinytext-Felder angelegt, geht aber trotzdem.
- tca.php anpassen
- In der tca.php muß man in den Elterntabellen die Definition für die Kindtabelle anpassen (das Integer Feld). Im Detail ist das der Inhalt des array config(...) und muß als Inline Feld umdeklariert werden z.B.:
Elterntabelle im tca.php Vorher (Ausschnitt):
... "config" => Array ( "type" => "input", "size" => "4", "max" => "4", "eval" => "int", "checkbox" => "0", "range" => Array ( "upper" => "1000", "lower" => "10" ), "default" => 0 ) ...
Elterntabelle Nachher (Ausschnitt):
$TCA["tx_irrehotel_hotel"] = Array (
"ctrl" => $TCA["tx_irrehotel_hotel"]["ctrl"],
"interface" => Array (
"showRecordFieldList" => "hidden,title,programs"
),
"feInterface" => $TCA["tx_irrehotel_hotel"]["feInterface"],
"columns" => Array (
[...],
"programs" => Array (
"exclude" => 1,
"label" => "LLL:EXT:irre_hotel/locallang_db.xml:tx_irrehotel_hotel.programs",
"config" => Array (
"type" => "inline",
"foreign_table" => "tx_irrehotel_program",
"foreign_field" => "parentid",
"foreign_table_field" => "parenttable",
"maxitems" => 10,
)
),
),
"types" => Array (
"0" => Array("showitem" => "hidden;;1;;1-1-1, title;;;;2-2-2, programs;;;;3-3-3")
),
"palettes" => Array (
"1" => Array("showitem" => "")
)
);
m:m Verknüpfungen
m:m Verknüpfungen sind notewendig wenn
Begriffserklärungen
Datenbankbeziehungen
Normalisierte 1:n Verknüpfung
In der Kindtabelle wird die id des Elternelements angegeben. Auf diese Weise können alle Kindelemente eines Elternelements abgefragt werden. Bei IRRE wird zudem im Kindelement die Elterntabelle mit angegeben. Somit weis das Kindelement welches seine Elterntabelle und welches sein Elterndatensatz ist. Man spricht hier von einer "weak entity"
Asymetrische Beziehungen
Hierbei sind 2 Tabellen betroffen.