代码之家  ›  专栏  ›  技术社区  ›  Pete

如何在TYPO3 8.x extbase中获取禁用的实体?

  •  0
  • Pete  · 技术社区  · 7 年前

    我已经设置了一个简单的存储库查询设置,以获取TYPO3 CMS 8.7.22中的某些fe_用户。如果不禁用此fe_用户,存储库将返回预期的实体。

    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);
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Pete    7 年前

    它是 findByUid frontendUserRepsository . 在那里,它们阻止获取隐藏/删除的对象。因此,我为这种情况构建了自己的存储库功能:

    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();
    }
    
    推荐文章