如何在 itemproc 函数中获取根页面 ID?
How to get the rootpage Id in a itemproc function?
我得到了一个使用 itemproc 函数配置插件的扩展。
/Configuration/FlexForms/Config.xml:
<T3DataStructure>
<meta type="array">
<langChildren>0</langChildren>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>Allgemein</sheetTitle>
</TCEforms>
<type>array</type>
<el>
:
<settings.auswahlKategorie>
<TCEforms>
<label>Anzuzeigende Kategorie wählen:</label>
<config>
<type>select</type>
<itemsProcFunc>Company\myextension\UserFunc\ItemsProcFunc->getCategoryList</itemsProcFunc>
</config>
</TCEforms>
</settings.auswahlKategorie>
:
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
在函数定义中
/**
* Generiert die Liste der Kategorien.
*
* Wird für den Aufbau der "FlexForm" benötigt.
*
* @param string_array $config TYPO3 config array.
* @return string_array Angepasstes TYPO3 - Config array.
*/
public function getCategoryList($config) {
:
他们假设可以通过以下方式访问根页面:
$pageId = $config['flexParentDatabaseRow']['pid'];
访问打字配置:
$conf = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('Company\myextension\Services\Config');
$conf->setConfFromTsSetup($pageId);
但没有值 $config['flexParentDatabaseRow']['pid']
,因此从第 0 页获取拼写错误,其中不存在拼写错误。
如何提供正确的根页面 ID(不修改外部公司的来源)?
我很确定他们的意思是您必须将配置添加到您的 flexform 配置中。
应该是这样的:
<config>
<type>select</type>
<itemsProcFunc>Company\myextension\UserFunc\ItemsProcFunc->getCategoryList</itemsProcFunc>
<flexParentDatabaseRow>
<pid>1</pid>
</flexParentDatabaseRow>
</config>
不确定这是正确的方法,但我很确定 $config
指的是 flexform 的配置部分或 TCA 设置(如果使用 TCA)。
问题是安装的 compatibility6 扩展。
这个issue给出了提示:
The breaking change no 70132 ("FormEngine custom functions") in the
TYPO3 core 7.6 suggests using 'flexParentDatabaseRow' instead of 'row'
for retrieving the full parent database row in a userFunc /
itemsProcFunc.
没有我需要做的设置。这些值在收到数据时设置。
我得到了一个使用 itemproc 函数配置插件的扩展。
/Configuration/FlexForms/Config.xml:
<T3DataStructure>
<meta type="array">
<langChildren>0</langChildren>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>Allgemein</sheetTitle>
</TCEforms>
<type>array</type>
<el>
:
<settings.auswahlKategorie>
<TCEforms>
<label>Anzuzeigende Kategorie wählen:</label>
<config>
<type>select</type>
<itemsProcFunc>Company\myextension\UserFunc\ItemsProcFunc->getCategoryList</itemsProcFunc>
</config>
</TCEforms>
</settings.auswahlKategorie>
:
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
在函数定义中
/**
* Generiert die Liste der Kategorien.
*
* Wird für den Aufbau der "FlexForm" benötigt.
*
* @param string_array $config TYPO3 config array.
* @return string_array Angepasstes TYPO3 - Config array.
*/
public function getCategoryList($config) {
:
他们假设可以通过以下方式访问根页面:
$pageId = $config['flexParentDatabaseRow']['pid'];
访问打字配置:
$conf = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('Company\myextension\Services\Config');
$conf->setConfFromTsSetup($pageId);
但没有值 $config['flexParentDatabaseRow']['pid']
,因此从第 0 页获取拼写错误,其中不存在拼写错误。
如何提供正确的根页面 ID(不修改外部公司的来源)?
我很确定他们的意思是您必须将配置添加到您的 flexform 配置中。
应该是这样的:
<config>
<type>select</type>
<itemsProcFunc>Company\myextension\UserFunc\ItemsProcFunc->getCategoryList</itemsProcFunc>
<flexParentDatabaseRow>
<pid>1</pid>
</flexParentDatabaseRow>
</config>
不确定这是正确的方法,但我很确定 $config
指的是 flexform 的配置部分或 TCA 设置(如果使用 TCA)。
问题是安装的 compatibility6 扩展。
这个issue给出了提示:
The breaking change no 70132 ("FormEngine custom functions") in the TYPO3 core 7.6 suggests using 'flexParentDatabaseRow' instead of 'row' for retrieving the full parent database row in a userFunc / itemsProcFunc.
没有我需要做的设置。这些值在收到数据时设置。