0

我添加了通过 flexforms 在我的扩展中设置 detailPid 的可能性:

<ROOT>
  <type>array</type>
  <el>
    <settings.detailPid>
      <TCEforms>
        <label>
    LLL:EXT:events/Resources/Private/Language/locallang_db.xlf:flexforms.overview.detailPid
        </label>
        <config>
          <type>group</type>
          <internal_type>db</internal_type>
          <allowed>pages</allowed>
          <size>1</size>
          <maxitems>1</maxitems>
          <show_thumbs>1</show_thumbs>
          <wizards>
            <suggest>
              <type>suggest</type>
            </suggest>
          </wizards>
        </config>
      </TCEforms>
    </settings.detailPid>
  </el>
</ROOT>

我想在 setup.ts 中通过 TS 设置默认的 detailPid:

plugin.tx_events_eventdetail {
    settings {
        listPid = {$plugin.tx_events_eventdetail.settings.listPid}
        detailPid = {$plugin.tx_events_eventdetail.settings.detailPid}
    }
}

我的问题是,如果我没有在插件中配置 detailPid,则不会使用我的 TS 中的默认值。我的 Controller 或 FLUID-Template 中的 settings.detailPid 为空。有没有办法解决这个问题?

我已经环顾四周,发现新闻扩展具有相同的行为。

感谢您的任何帮助和建议!

4

2 回答 2

1

至少扩展tt_address和 news 有一个配置,如果 flexform 为空,则允许回退到 TS。如果你需要,你可以复制代码并在你的扩展中使用它。

核心中没有可用的配置。

于 2019-02-23T18:23:26.800 回答
1

您可以将您的 flexforms detailPid 路径重命名为类似的内容,settings.flexform.detailPid然后在您的控制器中,您可以将 TS 中的设置与 Flexform 中的设置合并,这样只有非空值才会生效。

ArrayUtility::arrayMergeRecursiveOverrule($this->settings, $this-settings['flexform'])

https://api.typo3.org/typo3cms/current/html/class_t_y_p_o3_1_1_c_m_s_1_1_extbase_1_1_utility_1_1_array_utility.html#af4008bc539411e9114ed53b1b007735b

于 2019-02-23T18:26:18.760 回答