问题描述
我想通过它们的 slug 从数据库中选择页面。对于可见页面,一切正常。但我无法选择隐藏页面。然后我尝试删除 HiddenRestriction 但这也不起作用。
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
$queryBuilder->getRestrictions()->removeByType(HiddenRestriction::class);
$result = $queryBuilder->select('uid')->from('pages')->where("slug='".$slug."'")->execute();
我只工作
$queryBuilder->getRestrictions()->removeAll();
试试这个
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
结果
Oops,an error occurred! Class 'MyExt\UF\DeletedRestriction' not found
这两行代码都是直接来自 Typo3 文档,所以我无法弄清楚问题所在。为什么 RemoveByType 不起作用?
解决方法
找到了这两个问题的问题,原因是一样的。文档示例不完整。为了正常工作,您必须添加相应的工作区辅助。
在 removeByType() 的情况下:
use TYPO3\CMS\Core\Database\Query\Restriction\HiddenRestriction;
并且在 add() 的情况下:
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
小因,大果……