我正在尝试读取其uid已知的前端用户的用户名。我在我的控制器的showAction方法中尝试了这个:
$objectManger = t3lib_div::makeInstance('Tx_Extbase_Object_ObjectManager');
// get repository
$repository = $objectManger->get('Tx_Extbase_Domain_Repository_FrontendUserRepository ');
$newObject = $repository->findByUid($coupon->getCreator()); //this is the uid of whoever was loggin in
print_r($newObject);
echo $newObject->getUsername(); die;
但是当代码运行时,我得到:
哎呀,发生错误! “Tx_Extbase_Domain_Repository_FrontendUserRepository”不是有效的缓存条目标识符。
事实证明$ repository是空的,那么如何获取fe_user数据呢?
我正在使用带有extbase的typo3 v4.5。
由于
更新以显示完整答案。 这是代码(它在我的CouponController中)有效(加上提到的typoscript):
/**
* @var Tx_Extbase_Domain_Repository_FrontendUserRepository
*/
protected $userRepository;
/**
* Inject the user repository
* @param Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository
* @return void */
public function injectFrontendUserRepository(Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository) {
$this->userRepository = $userRepository;
}
public function showAction(Tx_Coupons_Domain_Model_Coupon $coupon) {
$userRepository = $this->objectManager->get("Tx_Extbase_Domain_Repository_FrontendUserRepository");
$newObject = $userRepository->findByUid($coupon->getCreator());
$this->view->assign('coupon', $coupon);
$this->view->assign('creatorname', $newObject->getUsername() );
}
答案 0 :(得分:2)
如果您自己使用extbase,则不必为objectManager调用makeInstance,它已经在那里($this->objectManager
)。
无论如何,您应该注入此存储库(请参阅我的答案:TYPO3 - Call another repository)
注射后清除缓存。
您可能必须为其FrontendUser禁用recordtype extbase集:
config.tx_extbase.persistence.classes.Tx_Extbase_Domain_Model_FrontendUser.mapping.recordType >
答案 1 :(得分:1)
设置存储库从以下位置获取数据的源存储pid:
/** @var Tx_Extbase_Domain_Repository_FrontendUserRepository $repos */
$repos = $this->objectManager->get("Tx_Extbase_Domain_Repository_FrontendUserRepository");
$querySettings = $repos->createQuery()->getQuerySettings();
$querySettings->setStoragePageIds(array(123, 567));
$repos->setDefaultQuerySettings($querySettings);
$user = $repos->findByUid(56); // Queries for user 56 in storages 123 and 567