【发布时间】:2013-10-03 16:16:12
【问题描述】:
如何在前端获取隐藏记录?想要获取隐藏记录然后将隐藏更改为0。
【问题讨论】:
标签: repository typo3 hidden-field extbase
如何在前端获取隐藏记录?想要获取隐藏记录然后将隐藏更改为0。
【问题讨论】:
标签: repository typo3 hidden-field extbase
您可以在存储库中为单个方法进行此设置:
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);
}
}
【讨论】:
您可以使用 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)
关键是在“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();
}
}
【讨论】:
setIgnoreEnableFields(TRUE)。 setRespectEnableFields 已被弃用并从 TYPO3 6.2.0 中删除。