Использование объектов содержимого изображения из tt_content в Extbase

Я хочу написать модуль Extbase Backend, которому нужен список всех объектов, сгенерированных из tt_content с CType = 'image'.

Теперь я начал определять простую модель

class Tx_Myextension_Domain_Model_Content extends Tx_Extbase_DomainObject_AbstractEntity
{

    /**
     * @var string
     */
    protected $header;

    /**
     * @return the $header
     */
    public function getHeader()
    {
        return $this->header;
    }

    /**
     * @param string $header
     */
    public function setHeader($header)
    {
        $this->header = $header;
    }

}

и репозиторий

class Tx_Myextension_Domain_Repository_ContentRepository extends Tx_Extbase_Persistence_Repository
{

    public function initializeObject()
    {
        $querySettings = $this->objectManager->create('Tx_Extbase_Persistence_Typo3QuerySettings');
        $querySettings->setRespectStoragePage(FALSE);
        $this->setDefaultQuerySettings($querySettings);
    }
}

Насколько я знаю, метод initializeObject — это способ получить все элементы контента, независимо от того, какой у них pid.

Наконец я попытался сопоставить свой класс контента с tt_content:

plugin.tx_myextension {
  persistence {
    classes {
      Tx_Myextension_Domain_Model_Content {
        mapping {
          tableName = tt_content
          recordType = Tx_Myextension_Domain_Model_Content
          columns {
            header.mapOnProperty = header
          }
        }
      }
    }
  }
}

module.tx_myextension {
    persistence < plugin.tx_myextension.persistence
}

Нет, я хочу использовать репозиторий. например считатьВсе. К сожалению, он всегда возвращает 0. Поиск запроса MySQL обнаруживает проблему:

SELECT COUNT(*) 
FROM tt_content  
WHERE (tt_content.CType='Tx_Myextension_Domain_Model_Content') 
  AND tt_content.deleted=0 AND tt_content.hidden=0 
  AND (tt_content.starttime<=1313073660) 
  AND (tt_content.endtime=0 OR tt_content.endtime>1313073660) 
  AND tt_content.sys_language_uid IN (0,-1) 
  AND tt_content.pid IN (0)

Typo 3 или Extbase или что-то другое добавили все эти операторы where в запрос. Я просто хочу избавиться от предложений CType и pid. Как я уже сказал, я думал, что метод, используемый в репо, приводит к игнорированию pid, что явно не так.

Кто-нибудь может мне помочь? Все, что мне нужно, это массив элементов содержимого изображения. Заранее спасибо.


person Sebastian vom Meer    schedule 11.08.2011    source источник


Ответы (2)


Поздний ответ: Вы, скорее всего, захотите позвонить

query->getQuerySettings()
    ->setRespectEnableFields(FALSE)
    ->setRespectSysLanguage(FALSE);

для вашего запроса. Вы можете отключить его для всех запросов в методе initializeObject вашего репозитория:

$querySettings = $this->objectManager->create('Tx_Extbase_Persistence_Typo3QuerySettings');
$querySettings
    ->setRespectStoragePage(FALSE)
    ->setRespectEnableFields(FALSE)
    ->setRespectSysLanguage(FALSE);
$this->setDefaultQuerySettings($querySettings);

См.: документацию по API TYPO 3

person Thomas Luzat    schedule 16.09.2012

Попробуйте удалить узел "recordType" из определения постоянства.

person Andy    schedule 24.09.2011
comment
Спасибо за эту идею. Я уже пробовал, но это тоже не сработало. Я исправил эту проблему, прочитав изображения напрямую из базы данных... - person Sebastian vom Meer; 26.09.2011