如何在 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.

没有我需要做的设置。这些值在收到数据时设置。