Сопоставление репозитория extbase Typo3 7.6 влияет только на нелокализованные записи

Я хочу создать собственное расширение extbase для TYPO3 CMS 7.6. Расширение должно работать на разных языках. Я понял, что сопоставление репозитория работает для меня только с нелокализованными записями.

Моя функция репозитория выглядит так:

public function findNew() {
  $query = $this->createQuery();
  $query->getQuerySettings()->setRespectSysLanguage(true);
  $query->matching($query->equals('new', 1));
  return $query->execute();
}

Эта функция говорит: Показать все записи с новым = 1

Пример: у меня есть запись по умолчанию, в которой НЕ активирован флажок «Новый». Теперь я создаю локализованную версию этой записи и устанавливаю флажок «Создать» в активированное состояние.

Если я выполню функцию findNew () на языке по умолчанию, запись не появится. Если я выполню функцию на другом языке, запись также не появится, хотя установлен флаг «Новый»!

Другими словами: соответствие влияет только на запись по умолчанию / родительскую.

Я использую следующие настройки конфигурации:

config {
  sys_language_mode = strict
  sys_language_overlay = hideNonTranslated
}

[Edit:] Вот полный сгенерированный SQL-запрос:

SELECT tx_extension_domain_model_table.*
FROM
tx_extension_domain_model_table
WHERE
  tx_extension_domain_model_table.new = '1'
  AND (
    tx_extension_domain_model_table.sys_language_uid = -1
    OR (
      tx_extension_domain_model_table.sys_language_uid = 1
      AND tx_extension_domain_model_table.l10n_parent = 0
    )
    OR (
      tx_extension_domain_model_table.sys_language_uid = 0
      AND tx_extension_domain_model_table.uid IN (
        SELECT tx_extension_domain_model_table.l10n_parent
        FROM tx_extension_domain_model_table
        WHERE tx_extension_domain_model_table.l10n_parent > 0
          AND tx_extension_domain_model_table.sys_language_uid = 1
          AND tx_extension_domain_model_table.deleted = 0
      )
    )
  )
  AND tx_extension_domain_model_table.deleted = 0
  AND tx_extension_domain_model_table.t3ver_state <= 0
  AND tx_extension_domain_model_table.pid <> -1
  AND tx_extension_domain_model_table.hidden = 0
  AND tx_extension_domain_model_table.starttime <= 1459780380
  AND (tx_extension_domain_model_table.endtime = 0 OR     tx_extension_domain_model_table.endtime > 1459780380)
ORDER BY tx_extension_domain_model_table.sorting ASC

... и важная часть:

    AND (
        tx_extension_domain_model_table.sys_language_uid = -1
    OR (
      tx_extension_domain_model_table.sys_language_uid = 1
      AND tx_extension_domain_model_table.l10n_parent = 0
    )
    OR (
      tx_extension_domain_model_table.sys_language_uid = 0
      AND tx_extension_domain_model_table.uid IN (
        SELECT tx_extension_domain_model_table.l10n_parent
        FROM tx_extension_domain_model_table
        WHERE tx_extension_domain_model_table.l10n_parent > 0
          AND tx_extension_domain_model_table.sys_language_uid = 1
          AND tx_extension_domain_model_table.deleted = 0
      )
    )
  )

Это объясняет мою проблему. TYPO3 не ищет new = 1 в sys_language_uid = 1 при локализации ... но почему?

Вопрос: это ошибка или особенность?


person Diogenes    schedule 04.04.2016    source источник


Ответы (1)


Это ошибка в extbase, дополнительную информацию см. Здесь: https://forge.typo3.org/issues/57272

person fnagel    schedule 07.07.2016