Zum Inhalt springen

TCA aktuell gewaehlten object_type ermitteln

Erstellt am 10. Januar 2008 · 2 Antworten · letzte Antwort am 15. Januar 2008

Tags: Frage

T0m ·

Hallo Forum

ich schreib gerade eine kleine Extension
bzw hab gerade angefangen sie mit dem Kickstarter zusammenzubaun
sie besteht aus 3 Tabellen: ein Hauptobjekt (Rucksack {Groesse,Farbe,TestRS,TestTasche,[Inhalte],[Materialien]) und 2 Tabellen (Inhalt{Name,Typ},Material{Name,Typ}) die nur Attribute darstellen

des weiteren moecht ich neben Rucksaecken noch Taschen verwenden,
daher hab ich den Inhalten und Materialien neben dem Namen noch eine Option Typ gegeben, womit ich angeben kann, ob der Inhalt fuer Rucksack und/oder Tasche gilt
in der TCA.php hab ich schon einen Radio Button eingebaut, mit dem ich zwischen Taschen und Rucksaecken hin und herschalten kann
es werden auch nur noch Felder(entweder TestRS oder TestTasche) angezeigt die fuer Taschen oder Rucksaecke gelten
nun aber mein Problem:
ich hab Materialien und Inhalte jeweils mit Typ angelegt
wie muss ich die tca.php modifizieren, dass mir bei der Auswahl eines Rucksacks(oder Tasche) nur noch die Inhalte/materialien angezeigt werden die ich als Typ Inhalt/Material gekennzeichnet hab ?

		"rucksack_inhalt" => Array (		
			"exclude" => 1,		
			"label" => "LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack.rucksack_inhalt",		
			"config" => Array (
				"type" => "select",	
				"foreign_table" => "tx_trrucksack_inhalt",	
				"foreign_table_where" => " AND tx_trrucksack_inhalt.sys_language_uid=0 ORDER BY tx_trrucksack_inhalt.name",	
				"size" => 10,	
				"minitems" => 0,
				"maxitems" => 99,
			)
		),

eigentlich muesste doch dann nur in dem WHERE Teil noch "AND tx_trrucksack_inhalt.uid=$object_type"
aber wie erhalt ich den momentan gewaehlten object_type ?

		'object_type' => array(
			'exclude' => 1,
			'label' => 'LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack.rucksack_object_type',
			'config' => array(
			'type' => 'radio',
				'default' => '0',
				'items' => array(
					Array("LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack.rucksack_object_type.I.0", "0"),
					Array("LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack.rucksack_object_type.I.1", "1")
				)
			)
		),

...

	"types" => Array (
		"0" => Array("showitem" => "showitem" => "sys_language_uid;;;;1-1-1, l18n_parent, l18n_diffsource, object_type, hidden, rucksack_groesse, rucksack_farbe, rucksack_testrs, rucksack_inhalte, rucksack_materialien"),
		"1" => Array("showitem" => "sys_language_uid;;;;1-1-1, l18n_parent, l18n_diffsource, object_type, hidden, rucksack_groesse, rucksack_farbe, rucksack_testtasche, rucksack_inhalte, rucksack_materialien")
	),

vielen Dank
T0m

T0m ·

Hallo Georg

danke fuer den Tip
da hat ich zwar schon geschaut gehabt, aber habs net hinbekommen
hab nun nochmal geschaut und es geht nun ein Teil

hab nun mal die SelectBox in der Auswahl des Typs bei Material und Inhalt gegen eine Checkbox getauscht

dann mit der displayCond rumgespielt, aber leider nicht zu einer lauffaehigen Version gekommen
hier meine momentane tca:

<?php
if (!defined ('TYPO3_MODE')) 	die ('Access denied.');

$TCA["tx_trrucksack_main"] = Array (
	"ctrl" => $TCA["tx_trrucksack_main"]["ctrl"],
	"interface" => Array (
		"showRecordFieldList" => "sys_language_uid,l18n_parent,l18n_diffsource,hidden,name,size,color,material,content,testrs,testb"
	),
	"feInterface" => $TCA["tx_trrucksack_main"]["feInterface"],
	"columns" => Array (
		'object_type' => array(
			'exclude' => 1,
			'label' => 'LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.rucksack_object_type',
			'config' => array(
			'type' => 'radio',
				'default' => '0',
				'items' => array(
					Array("LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.object_type.I.0", "0"),
					Array("LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.object_type.I.1", "1"),
					Array("LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.object_type.I.2", "2")
				)
			)
		),
		'sys_language_uid' => array (		
			'exclude' => 1,
			'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.language',
			'config' => array (
				'type' => 'select',
				'foreign_table' => 'sys_language',
				'foreign_table_where' => 'ORDER BY sys_language.title',
				'items' => array(
					array('LLL:EXT:lang/locallang_general.xml:LGL.allLanguages',-1),
					array('LLL:EXT:lang/locallang_general.xml:LGL.default_value',0)
				)
			)
		),
		'l18n_parent' => Array (		
			'displayCond' => 'FIELD:sys_language_uid:>:0',
			'exclude' => 1,
			'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.l18n_parent',
			'config' => Array (
				'type' => 'select',
				'items' => Array (
					Array('', 0),
				),
				'foreign_table' => 'tx_trrucksack_main',
				'foreign_table_where' => 'AND tx_trrucksack_main.pid=###CURRENT_PID### AND tx_trrucksack_main.sys_language_uid IN (-1,0)',
			)
		),
		'l18n_diffsource' => Array (		
			'config' => Array (
				'type' => 'passthrough'
			)
		),
		"hidden" => Array (		
			"exclude" => 1,
			"label" => "LLL:EXT:lang/locallang_general.xml:LGL.hidden",
			"config" => Array (
				"type" => "check",
				"default" => "0"
			)
		),
		"name" => Array (		
			"exclude" => 1,		
			"label" => "LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.name",		
			"config" => Array (
				"type" => "input",	
				"size" => "30",
			)
		),
		"size" => Array (		
			"exclude" => 1,		
			"label" => "LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.size",		
			"config" => Array (
				"type" => "select",
				"items" => Array (
					Array("LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.size.I.0", "0"),
					Array("LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.size.I.1", "1"),
					Array("LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.size.I.2", "2"),
					Array("LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.size.I.3", "3"),
				),
				"size" => 1,	
				"maxitems" => 1,
			)
		),
		"color" => Array (		
			"exclude" => 1,		
			"label" => "LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.color",		
			"config" => Array (
				"type" => "input",	
				"size" => "30",
			)
		),


		"material0" => Array (		
			"exclude" => 1,		
			"label" => "LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.material",	
			'displayCond' => 'FIELD:object_type:=:0',
			"config" => Array (
				"type" => "select",	
				"foreign_table" => "tx_trrucksack_material",	
				"foreign_table_where" => "AND tx_trrucksack_material.rtype IN (1,3) ORDER BY tx_trrucksack_material.uid",	
				"size" => 9,	
				"minitems" => 0,
				"maxitems" => 99,
			)
		),


		"material1" => Array (		
			"exclude" => 1,		
			"label" => "LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.material",	
			'displayCond' => 'FIELD:object_type:=:1',
			"config" => Array (
				"type" => "select",	
				"foreign_table" => "tx_trrucksack_material",	
				"foreign_table_where" => "AND tx_trrucksack_material.rtype IN (2,3) ORDER BY tx_trrucksack_material.uid",	
				"size" => 9,	
				"minitems" => 0,
				"maxitems" => 99,
			)
		),
		
		"content0" => Array (		
			"exclude" => 1,		
			"label" => "LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.content",		
			'displayCond' => 'FIELD:object_type:=:0',
			"config" => Array (
				"type" => "select",	
				"foreign_table" => "tx_trrucksack_content",	
				"foreign_table_where" => "AND tx_trrucksack_content.rtype IN (1,3) ORDER BY tx_trrucksack_content.uid",	
				"size" => 9,	
				"minitems" => 0,
				"maxitems" => 99,
			)
		),
		"content1" => Array (		
			"exclude" => 1,		
			"label" => "LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.content",
			'displayCond' => 'FIELD:object_type:=:1',
			"config" => Array (
				"type" => "select",	
				"foreign_table" => "tx_trrucksack_content",	
				"foreign_table_where" => "AND tx_trrucksack_content.rtype IN (2,3) ORDER BY tx_trrucksack_content.uid",	
				"size" => 9,	
				"minitems" => 0,
				"maxitems" => 99,
			)
		),
		"testrs" => Array (		
			"exclude" => 1,		
			"label" => "LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.testrs",		
			"config" => Array (
				"type" => "input",	
				"size" => "30",
			)
		),
		"testb" => Array (		
			"exclude" => 1,		
			"label" => "LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_main.testb",		
			"config" => Array (
				"type" => "input",	
				"size" => "30",
			)
		),
	),
	"types" => Array (
		"0" => Array("showitem" => "sys_language_uid;;;;1-1-1, l18n_parent, l18n_diffsource, object_type, hidden;;1, name, size, color, material0, content0, testrs"),
		"1" => Array("showitem" => "sys_language_uid;;;;1-1-1, l18n_parent, l18n_diffsource, object_type, hidden;;1, name, size, color, material1, content1, testb")
	),
	"palettes" => Array (
		"1" => Array("showitem" => "")
	)
);



$TCA["tx_trrucksack_material"] = Array (
	"ctrl" => $TCA["tx_trrucksack_material"]["ctrl"],
	"interface" => Array (
		"showRecordFieldList" => "sys_language_uid,l18n_parent,l18n_diffsource,hidden,name,rtype"
	),
	"feInterface" => $TCA["tx_trrucksack_material"]["feInterface"],
	"columns" => Array (
		'sys_language_uid' => array (		
			'exclude' => 1,
			'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.language',
			'config' => array (
				'type' => 'select',
				'foreign_table' => 'sys_language',
				'foreign_table_where' => 'ORDER BY sys_language.title',
				'items' => array(
					array('LLL:EXT:lang/locallang_general.xml:LGL.allLanguages',-1),
					array('LLL:EXT:lang/locallang_general.xml:LGL.default_value',0)
				)
			)
		),
		'l18n_parent' => Array (		
			'displayCond' => 'FIELD:sys_language_uid:>:0',
			'exclude' => 1,
			'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.l18n_parent',
			'config' => Array (
				'type' => 'select',
				'items' => Array (
					Array('', 0),
				),
				'foreign_table' => 'tx_trrucksack_material',
				'foreign_table_where' => 'AND tx_trrucksack_material.pid=###CURRENT_PID### AND tx_trrucksack_material.sys_language_uid IN (-1,0)',
			)
		),
		'l18n_diffsource' => Array (		
			'config' => Array (
				'type' => 'passthrough'
			)
		),
		"hidden" => Array (		
			"exclude" => 1,
			"label" => "LLL:EXT:lang/locallang_general.xml:LGL.hidden",
			"config" => Array (
				"type" => "check",
				"default" => "0"
			)
		),
		"name" => Array (		
			"exclude" => 1,		
			"label" => "LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_material.name",		
			"config" => Array (
				"type" => "input",	
				"size" => "30",
			)
		),
		"rtype" => Array (		
			"exclude" => 1,		
			"label" => "LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_material.rtype",		
			"config" => Array (
				"type" => "check",
				"items" => Array (
					Array("LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_material.rtype.I.0", "0"),
					Array("LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_material.rtype.I.1", "1"),
				),
				"cols" => 2,	
			)
		),
	),
	"types" => Array (
		"0" => Array("showitem" => "sys_language_uid;;;;1-1-1, l18n_parent, l18n_diffsource, hidden;;1, name, rtype")
	),
	"palettes" => Array (
		"1" => Array("showitem" => "")
	)
);



$TCA["tx_trrucksack_content"] = Array (
	"ctrl" => $TCA["tx_trrucksack_content"]["ctrl"],
	"interface" => Array (
		"showRecordFieldList" => "sys_language_uid,l18n_parent,l18n_diffsource,hidden,name,rtype"
	),
	"feInterface" => $TCA["tx_trrucksack_content"]["feInterface"],
	"columns" => Array (
		'sys_language_uid' => array (		
			'exclude' => 1,
			'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.language',
			'config' => array (
				'type' => 'select',
				'foreign_table' => 'sys_language',
				'foreign_table_where' => 'ORDER BY sys_language.title',
				'items' => array(
					array('LLL:EXT:lang/locallang_general.xml:LGL.allLanguages',-1),
					array('LLL:EXT:lang/locallang_general.xml:LGL.default_value',0)
				)
			)
		),
		'l18n_parent' => Array (		
			'displayCond' => 'FIELD:sys_language_uid:>:0',
			'exclude' => 1,
			'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.l18n_parent',
			'config' => Array (
				'type' => 'select',
				'items' => Array (
					Array('', 0),
				),
				'foreign_table' => 'tx_trrucksack_content',
				'foreign_table_where' => 'AND tx_trrucksack_content.pid=###CURRENT_PID### AND tx_trrucksack_content.sys_language_uid IN (-1,0)',
			)
		),
		'l18n_diffsource' => Array (		
			'config' => Array (
				'type' => 'passthrough'
			)
		),
		"hidden" => Array (		
			"exclude" => 1,
			"label" => "LLL:EXT:lang/locallang_general.xml:LGL.hidden",
			"config" => Array (
				"type" => "check",
				"default" => "0"
			)
		),
		"name" => Array (		
			"exclude" => 1,		
			"label" => "LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_content.name",		
			"config" => Array (
				"type" => "input",	
				"size" => "30",
			)
		),
		"rtype" => Array (		
			"exclude" => 1,		
			"label" => "LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_content.rtype",		
			"config" => Array (
				"type" => "check",
				"items" => Array (
					Array("LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_content.rtype.I.0", "0"),
					Array("LLL:EXT:tr_rucksack/locallang_db.xml:tx_trrucksack_content.rtype.I.1", "1"),
				),
				"cols" => 2,	
			)
		),
	),
	"types" => Array (
		"0" => Array("showitem" => "sys_language_uid;;;;1-1-1, l18n_parent, l18n_diffsource, hidden;;1, name, rtype")
	),
	"palettes" => Array (
		"1" => Array("showitem" => "")
	)
);
?>

darin hab ich zweimal Material und zweimal Inhalt definiert, damit wuerde die Auswahl funktionieren, aber er kanns nicht speichern, da es nur ein Feld "material" und "content" gibt

wenn man die zwei wieder zu einem Umbiegen koennt, wuerds funktionieren, oder loest man des anders ?
bin leider auch bei der Suche nach aehnlichen Beispielen nicht fuendig geworden

hab die Ext nur local laufen, aber koennt sie mal versuchen ins TER zu stellen, wenns hilft

:-help

Gruss T0m