如何在 TYPO3 8.x extbase 中获取禁用的实体?
How to get disabled entities in TYPO3 8.x extbase?
我已经设置了一个简单的存储库查询设置,以便在 TYPO3 CMS 8.7.22 中获得某些 fe_user。如果不禁用此 fe_user 存储库会返回预期的实体。
但在再次禁用对象后存储库 returns null
。那么为什么 setIgnoreEnableFields
和 setEnableFieldsToBeIgnored
不再起作用了?
$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');
$defaultQuerySettings = $objectManager->get('TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings');
$defaultQuerySettings->setRespectSysLanguage(FALSE);
$defaultQuerySettings->setRespectStoragePage(TRUE);
$defaultQuerySettings->setIgnoreEnableFields(TRUE);
$defaultQuerySettings->setEnableFieldsToBeIgnored(array('disable'));
$someRepository->setDefaultQuerySettings($defaultQuerySettings);
$response = $someRepository->findByIdentifier($fe_user_id);
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($response);
它是默认 frontendUserRepsository
的 findByUid
函数。他们在那里防止隐藏/删除对象。所以我为这种情况构建了自己的存储库函数:
public function findHiddenByUid($uid){
$query = $this->createQuery();
$qs = clone($this->defaultQuerySettings);
$qs->setIgnoreEnableFields(TRUE);
$qs->setEnableFieldsToBeIgnored(['disable','hidden','disabled']);
$query->setQuerySettings($qs);
$query->matching($query->equals('uid', $uid));
return $query->execute()->getFirst();
}
我已经设置了一个简单的存储库查询设置,以便在 TYPO3 CMS 8.7.22 中获得某些 fe_user。如果不禁用此 fe_user 存储库会返回预期的实体。
但在再次禁用对象后存储库 returns null
。那么为什么 setIgnoreEnableFields
和 setEnableFieldsToBeIgnored
不再起作用了?
$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');
$defaultQuerySettings = $objectManager->get('TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings');
$defaultQuerySettings->setRespectSysLanguage(FALSE);
$defaultQuerySettings->setRespectStoragePage(TRUE);
$defaultQuerySettings->setIgnoreEnableFields(TRUE);
$defaultQuerySettings->setEnableFieldsToBeIgnored(array('disable'));
$someRepository->setDefaultQuerySettings($defaultQuerySettings);
$response = $someRepository->findByIdentifier($fe_user_id);
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($response);
它是默认 frontendUserRepsository
的 findByUid
函数。他们在那里防止隐藏/删除对象。所以我为这种情况构建了自己的存储库函数:
public function findHiddenByUid($uid){
$query = $this->createQuery();
$qs = clone($this->defaultQuerySettings);
$qs->setIgnoreEnableFields(TRUE);
$qs->setEnableFieldsToBeIgnored(['disable','hidden','disabled']);
$query->setQuerySettings($qs);
$query->matching($query->equals('uid', $uid));
return $query->execute()->getFirst();
}