TYPO3: настройка по умолчанию в TCA перезаписывается при настройке через Flexforms в Extbase Extension - PullRequest
0 голосов
/ 23 февраля 2019

Я добавил возможность установить detailPid в моем Расширении с помощью flexforms:

<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>

Я хочу установить по умолчанию detailPid через TS в моем файле setup.ts:

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

Моя проблема в том, что, если я не настрою detailPid в моем плагине, значение по умолчанию из моего TS не используется.Settings.detailPid в моем контроллере или в FLUID-шаблоне пуст.Есть ли способ просто исправить это?

Я уже огляделся и обнаружил, что новостное расширение имеет такое же поведение.

Спасибо за любую помощь и предложения!

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Вы можете переименовать ваш путь flexform 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

0 голосов
/ 23 февраля 2019

По крайней мере, расширения tt_address и новости имеют конфигурацию, которая допускает возврат к TS, если flexform пуст.Если вам это нужно, вы можете скопировать код и использовать его в своем расширении.

В ядре нет конфигурации для этого.

...