[TYPO3-core] RFC: Feature #6770: Implement option to use different Flexform Datastructures per type field value
Martin Kutschker
Martin.Kutschker at n0spam-blackbox.net
Fri Nov 23 08:39:38 CET 2007
Steffen Kamper schrieb:
> "Ingmar Schlecht" <ingmar at typo3.org> schrieb im Newsbeitrag
> news:mailman.1.1195685420.13243.typo3-team-core at lists.netfielders.de...
>> Hi Masi,
>>
>> Martin Kutschker schrieb:
>>> We could use a * or the blank for a catchall
>>>
>>> But I think we can have this even shorter:
>>>
>>> 'ds_pointerfield' => 'list_type,CType',
>>> 'ds' => array(
>>> 'auxdataviewer_pi1' => 'FILE:EXT:auxdataviewer/pi1/flex.xml',
>>> '*,table' => 'FILE:EXT:csc/flex.xml',
>>> 'tt_address_pi1,list' => 'FILE:EXT:.../...xml',
>>> ),
>> Sounds good, attached is a new patch.
>>
>> The pointer fields are limited to two fields though, implementing it for
>> an arbitrary amount of fields would get too complex.
>>
>> cheers
>> Ingmar
>>
>> --
>> Ingmar Schlecht
>> TYPO3 Association Active Member
>>
>
> +1 after testing.
>
> I tested with the felogin extension (CType) and the inclusion mentioned by
> Ingmar:
> $TCA['tt_content']['columns']['pi_flexform']['config']['ds']['*,login'] =
> 'FILE:EXT:'.$_EXTKEY.'/flexform.xml';
>
> works perfect ;-)
>
> I tried it witt a normal extension added to list, the syntax is slightly
> different as you don't have to use the tx_
> so i did with newloginbox and got it with
>
> $TCA['tt_content']['columns']['pi_flexform']['config']['ds']['newloginbox_pi1,list']
> = 'FILE:EXT:newloginbox/flexform_ds.xml';
> or
> $TCA['tt_content']['columns']['pi_flexform']['config']['ds']['newloginbox_pi1]
> = 'FILE:EXT:newloginbox/flexform_ds.xml';
>
> works perfect.
> But why should i use list as second parameter is optional, is there any
> other possibility?
The CType is "list". The point is to let other CTypes use their data sources.
But this (my) proposal has a flaw. You cannot have different subtypes per type.
Current the CType=list uses list_type as sub type. Currently there are no
other (offical) CTypes with subtypes.
Consider this extension: I extend tt_content with a media/mime type field.
This field is used by CType=multimedia. Based on the media field the flex
form shows different fiedls for Flash, Quicktime, etc
To make it readable I resort here in this example to Ingmar's idea of
adding a second config field:
'ds_pointerfield' => 'list_type,*,mime_type',
'ds_pointerfield_type' => 'CType:list,table,multimedia',
'ds' => array(
'auxdataviewer_pi1' => 'FILE:EXT:auxdataviewer/pi1/flex.xml',
'*,table' => 'FILE:EXT:csc/table_flex.xml',
'tt_address_pi1,list' => 'FILE:EXT:.../...xml',
'flash,multimedia' => 'FILE:EXT:.../...xml',
'quicktime,multimedia' => 'FILE:EXT:.../...xml',
),
So in 'ds_pointerfield' there are the "subtype" fields to be used for the
different "types". In 'ds_pointerfield_type' is listed the type and the
defined subtypes for the DS. The mapping is straight: first entry of
'ds_pointerfield' belongs to the first entry of 'ds_pointerfield_subtypes'
and so on.
Variant of above (another field, even better readability and no split
required):
'ds_pointerfield' => 'list_type,*,mime_type',
'ds_pointerfield_type' => 'CType',
'ds_pointerfield_subtypes' => 'list,table,multimedia',
The implementation may use the main type field of the TCA definition if
'ds_pointerfield_subtypes' is present but 'ds_pointerfield_type' is not.
Masi
More information about the TYPO3-team-core
mailing list