2017-01-19 11 views
0

我正在使用新闻扩展来管理我的网站的新闻消息。一些新闻项目在后台被禁用。用户有消息对象的ID的网址,它会在我的控制器触发一个动作当设置隐藏在后端时,检索控制器中的对象TYPO3

我试图让我的新闻对象这样

$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

退房。我正在使用的消息扩展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)也将返回隐藏的对象。

+0

谢谢。这似乎工作,但它返回给我一个查询结果。所以当我尝试使用setHidden(0)它不工作(未定义的方法),因为它现在不是一个新闻模型。有什么建议么? –

+1

对不起,我的错。我使用findById,而不是findByUid。有用!谢谢! –

相关问题