2013-10-03 1 views

ответ

3

Дело в том, чтобы отключить свойство 'respectEnableFields' в 'querySettings'. Вы можете сделать это в вашем хранилище, как это:

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(); 
    } 
} 
+5

В TYPO3 версии 6.0 .0 и выше, теперь это 'setIgnoreEnableFields (TRUE)'. 'setRespectEnableFields' устарел и удален из TYPO3 6.2.0. –

+0

"устарел и удален из TYPO3 6.2.0" - больше информации об этом? Как получить скрытые/удаленные StorageObjects сейчас? – j4k3

6

Вы можете сделать эти настройки для метода опалить в вашем Repository:

<?php 
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 object 
    */ 
    public function findHiddenByUid($uid) { 
     $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(); 
    } 
} 

Или для всего Repository. Это включает в себя методы, которые вы унаследовали от TYPO3\CMS\Extbase\Persistence\Repository:

<?php 
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() { 
     // 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); 
    } 
} 
3

Вы можете использовать initializeObject Метод Repository, поэтому мы не должны писать querySettings для каждого метода в Repository

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); 
    } 
} 
+0

'$ querySettings-> getQuerySettings() -> setIgnoreEnableFields (true)' не работает, просто используйте '$ querySettings-> setIgnoreEnableFields (true)' – andreas