Typo3 Extensions mit IRRE

Aus Wikizone
Wechseln zu: Navigation, Suche

So gehts:

  1. Im Kickstarter Felder in Kindtabellen anlegen (parenttable, parentid -> Typ Passthrough)
  2. Im Kickstarter Feld in Elterntabelle anlegen (child[name] -> Typ z.B. Integer)
  3. In tca.php abändern der Backendkonfiguration für die Elterntabelle

Erläuterung:

  • Kindtabellen (n-Tabelle) benötigen die Felder parenttable und parentid (kann auch anders benannt werden macht aber Sinn) diese enthalten später die Elterntabelle und die uid des Elterndatensatzes (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 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):

...
			"config" => Array (
				"type"     => "input",
				"size"     => "4",
				"max"      => "4",
				"eval"     => "int",
				"checkbox" => "0",
				"range"    => Array (
					"upper" => "1000",
					"lower" => "10"
				),
				"default" => 0
			)

...

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" => "")
	)
);