1

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 に入っています) です (および、言及されているタイポスクリプト):

 /** 
     * @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() );

}
4

2 に答える 2

2

自分で extbase を使用している場合は、objectManager に対して makeInstance を呼び出す必要はありません。既に存在しています ( $this->objectManager)。

とにかく、このリポジトリを注入する必要があります (ここで私の回答を参照してください: TYPO3 - Call another repository )

インジェクション後にキャッシュをクリアします。

FrontendUser のレコード タイプ extbase セットを無効にする必要がある場合があります。

config.tx_extbase.persistence.classes.Tx_Extbase_Domain_Model_FrontendUser.mapping.recordType >
于 2013-11-08T17:30:05.340 に答える
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
于 2013-11-08T16:14:20.043 に答える