我正在尝试创建用户管理模块。我想得到所有FE用户。
这是我的控制器:
/**
* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository
* @inject
*/
protected $feUserRepository;
然后我用:
$users = $this->feUserRepository->findAll();
$this->view->assign('users', $users);
但我得到的只是一个空物。
编辑:
出于某种原因
$this->feUserRepository->findByUId(1);
确实有效,但findAll()没有......
答案 0 :(得分:1)
这是因为extbase会默默禁用respectStoragePage
调用的querySettings上的findByUid($uid)
设置。
所以,你有两个选择:
plugin.tx_myextension.persistence.storagePid
)。这样,您将找到存储在给定页面上的每个前端用户。您可以实现自己的FrontendUserRepository
从extbase扩展存储库,但禁用所有调用的respectStoragePage
(这样,无论存储记录的页面如何,您都将获得每个frontendUser上)。这是你如何做到的:
use TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository as ExtbaseFrontendUserRepository;
class FrontendUserRepository extends ExtbaseFrontendUserRepository
{
/**
* Disable respecting of a storage pid within queries globally.
*/
public function initializeObject()
{
$defaultQuerySettings = $this->objectManager->get(\TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings:class);
$defaultQuerySettings->setRespectStoragePage(false);
$this->setDefaultQuerySettings($defaultQuerySettings);
}
}
在您的控制器中,然后注入FrontendUserRepository
。然后你应该为FrontendUser
模型做同样的事情,然后告诉extbase你正在为你的模型使用fe_users表:
config.tx_extbase {
persistence {
classes {
Vendor\MyExtension\Domain\Model\FrontendUser {
mapping {
tableName = fe_users
}
}
}
}
}