在后端TYPO3中隐藏设置时,在控制器中检索对象

时间:2017-01-19 08:03:08

标签: object typo3 tx-news

我正在使用新闻扩展程序管理我网站的新闻消息。某些新闻项目在后端被禁用。用户有一个id为新闻对象的url,它将在我的控制器中触发一个动作

我正试图获取这样的新闻对象

$news = $this->newsRepository->findByUid($id);

这将返回NULL,因为它在后端被禁用/隐藏。当我将其切换回启用时。它会很好地回归我的对象。

我在newsRepository中使用以下函数尝试了它

public function findHiddenByUid($uid) {

            $query = $this->createQuery();
            $query->getQuerySettings()->setRespectSysLanguage(FALSE);   
            $query->getQuerySettings()->setRespectStoragePage(FALSE);
            $query->getQuerySettings()->setEnableFieldsToBeIgnored(array('disable')); 
            return $query
            ->matching(
            $query->equals('uid', $uid)
            )
                ->execute()
                ->getFirst();

 }

但这也会返回NULL

功能是否错误,我错过了一些设置吗?我正在使用TYPO3 7.6

1 个答案:

答案 0 :(得分:1)

查看我在新闻扩展中使用的findByUid

public function findByUid($uid, $respectEnableFields = true)
{
    $query = $this->createQuery();
    $query->getQuerySettings()->setRespectStoragePage(false);
    $query->getQuerySettings()->setRespectSysLanguage(false);
    $query->getQuerySettings()->setIgnoreEnableFields(!$respectEnableFields);

    return $query->matching(
        $query->logicalAnd(
            $query->equals('uid', $uid),
            $query->equals('deleted', 0)
        ))->execute()->getFirst();
}

通过调用->findByUid(123,false)也会返回隐藏的对象。