我有一个带FlexForm的TYPO3插件。在FlexForm中,我向外部表添加了关系。现在,我需要禁用外部表的某些字段。我无法通过用户权限来执行此操作,因为这是上下文问题,而不是权限问题。
我的FlexForm看起来像这样:
<settings.moreinfo>
<TCEforms>
<label>my label</label>
<config>
<type>inline</type>
<foreign_table>tx_foo_domain_model_bar</foreign_table>
<foreign_field>content_uid</foreign_field>
<foreign_sortby>sorting</foreign_sortby>
<maxitems>50</maxitems>
</config>
</TCEforms>
</settings.moreinfo>
我考虑过TCEFORM
,但不知道如何解决该问题:
TCEFORM.tt_content.pi_flexform.foobar.general {
settings\.moreinfo {
# maybe here?
}
}
是否可以通过TSconfig或PHP禁用字段?
答案 0 :(得分:0)
通常,您可以禁用flexform字段。 manual指出了可能性:
其他属性也适用于弹性表单字段,在这种情况下,必须设置包括数据结构键的完整属性路径:
TCEFORM.[tableName].[fieldName].[dataStructureKey].[flexSheet].[flexFieldName].[propertyName]
。
[dataStructKey]
代表FlexForm在$GLOBALS['TCA'][<tableName>]['columns'][<field>]['config']['ds']
。这个 密钥最多分为两部分。默认情况下,第一部分将 在TSconfig中用作FlexForm的标识符。第二部分 如果标识符不为空,则将覆盖标识符,列表或*。
例如,密钥my_ext_pi1,list
的标识符将为my_ext_pi1
并在键*,my_CType
中将其为my_CType
。请参阅指向 有关详细信息,请参阅TCA参考的数据结构。某些属性适用于整个FlexForm工作表,它们的属性路径为
TCEFORM.[tableName].[fieldName].[dataStructureKey].[flexSheet].[propertyName]
。
如果在标识符内使用.
,可能会出现问题。
答案 1 :(得分:0)
This answer to a different question启发了我解决方案,终于解决了我的问题!
foreign_types
是我正在寻找的解决方案:
<settings.moreinfo>
<TCEforms>
<label>my label</label>
<config>
<type>inline</type>
<foreign_table>tx_foo_domain_model_bar</foreign_table>
<foreign_field>content_uid</foreign_field>
<foreign_sortby>sorting</foreign_sortby>
<maxitems>50</maxitems>
<foreign_types type="array">
<numIndex index="1" type="array">
<showitem>
title, link, --div--;LLL:EXT:cms/locallang_ttc.xlf:tabs.access, hidden;;1, starttime, endtime
</showitem>
</numIndex>
</foreign_types>
</config>
</TCEforms>
</settings.moreinfo>