【问题标题】:EXTBASE: How to get hidden recordEXTBASE:如何获取隐藏记录
【发布时间】:2013-10-03 16:16:12
【问题描述】:

如何在前端获取隐藏记录?想要获取隐藏记录然后将隐藏更改为0。

【问题讨论】:

    标签: repository typo3 hidden-field extbase


    【解决方案1】:

    您可以在存储库中为单个方法进行此设置:

    namespace Vendor\ExtensionName\Domain\Repository;
    
    use TYPO3\CMS\Extbase\Persistence\Repository;
    
    /**
     * Some Repository
     */
    class SomeRepository extends Repository
    {
        /**
         * Find a record by uid even if it is hidden or deleted
         *
         * @param int $uid
         * @return Some
         */
        public function findHiddenByUid($uid): Some
        {
            $query = $this->createQuery();
    
            // Here you enable the hidden and deleted Records
            $query->getQuerySettings()
                ->setIgnoreEnableFields(true)
                ->setIncludeDeleted(true);
    
            // Your query
            $query->matching($query->equals('uid', $uid));
            return $query->execute()->getFirst();
        }
    }
    

    或者对于整个存储库。这包括您从TYPO3\CMS\Extbase\Persistence\Repository 继承的方法:

    namespace Vendor\ExtensionName\Domain\Repository;
    
    use TYPO3\CMS\Extbase\Persistence\Repository;
    use TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings;
    
    /**
     * Some Repository
     */
    class SomeRepository extends Repository
    {
        /**
         * Always return hidden and deleted records from this Repository
         */
        public function initializeObject(): void
        {
            // Load the querySettings
            $querySettings = $this->objectManager->get(Typo3QuerySettings::class);
    
            // Ignore hidden and deleted records
            $querySettings
                ->setIgnoreEnableFields(true)
                ->setIncludeDeleted(true);
    
            // Set your settings as default for the entire Repository
            $this->setDefaultQuerySettings($querySettings);
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用 initializeObject 存储库的方法,这样我们就不必为存储库中的每个方法编写 querySettings

      class SomeRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {
      
          /**
           * initialize querySettings
          */
          public function initializeObject() {
              $querySettings = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\Typo3QuerySettings');
      
              // Get Hidden and Deleted Records
              $querySettings->getQuerySettings()->setIgnoreEnableFields(true);
      
              //Disable Storage pid
              $querySettings->setRespectStoragePage(FALSE);
              $this->setDefaultQuerySettings($querySettings);
          }
      }
      

      【讨论】:

      • $querySettings->getQuerySettings()->setIgnoreEnableFields(true) 不行,用$querySettings->setIgnoreEnableFields(true)
      【解决方案3】:

      关键是在“querySettings”中禁用“respectEnableFields”属性。您可以像这样在您的存储库中执行此操作:

      class SomeRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {
      
          public function findHiddenByUid($uid) {
              $query = $this->createQuery();
              $query->getQuerySettings()->setRespectEnableFields(FALSE);
              $query->matching($query->equals('uid', $uid));
              return $query->execute()->getFirst();
          }
      }
      

      【讨论】:

      • 在 TYPO3 6.0.0 及更高版本中,现在是setIgnoreEnableFields(TRUE)setRespectEnableFields 已被弃用并从 TYPO3 6.2.0 中删除。
      • "已被弃用并从 TYPO3 6.2.0 中删除" - 还有更多信息吗?我现在如何检索隐藏/删除的存储对象?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多