2014-01-22 37 views
0

我有一個擴展,我需要獲得所有前端用戶。 我嘗試這樣做:Typo3 6.1 Extbase - 選擇所有fe用戶

/** 
    * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository $feUserRepository 
    */ 
    $feUserRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Domain\\Repository\\FrontendUserRepository'); 
    $allUsers = $feUserRepository->findAll(); 
    $user = $feUserRepository->findByUid(1); 

findByUid(1)工作,但的findAll()返回一個空的對象。 我在這裏做錯了什麼?

UPDATE:

這是關於一個新聞延伸。我在tx_xxnews_domain_model_news和fe_users之間有一個毫米關係,所以我可以跟蹤哪些用戶訪問了哪些新聞。

TCA新聞:

'columns' => array(
     ... 

     'fe_users' => array(
      'exclude' => 0, 
      'label' => 'LLL:EXT:xx_news/Resources/Private/Language/locallang_db.xlf:tx_xxnews_domain_model_news.fe_users', 
      'config' => array(
       'type' => 'select', 
       'foreign_table' => 'fe_users', 
       'MM' => 'tx_xxnews_news_feuser_mm', 
       'size' => 10, 
       'autoSizeMax' => 30, 
       'maxitems' => 9999, 
       'multiple' => 0, 
      ), 
     ), 
     ... 
), 

我必須證明誰從誰做不是那些單獨訪問新聞的用戶,所以我有2組以上的列,其顯示來自一個用戶定義函數的內容:

'reading_users' => array (
    'exclude' => 0, 
    'label' => 'LLL:EXT:xx_news/Resources/Private/Language/locallang_db.xlf:tx_xxnews_domain_model_news.user_info', 
    'config' => array (
     'type' => 'user', 
     'size' => '30', 
     'userFunc' => 'EXT:xx_news/Classes/TCA/class.tx_xxnews_tca.php:tx_examples_tca->readersInfo', 
     'parameters' => array(
      'read' => TRUE 
     ) 
    ) 
), 
'not_reading_users' => array (
    'exclude' => 0, 
    'label' => 'LLL:EXT:xx_news/Resources/Private/Language/locallang_db.xlf:tx_xxnews_domain_model_news.user_info', 
    'config' => array (
     'type' => 'user', 
     'size' => '30', 
     'userFunc' => 'EXT:xx_news/Classes/TCA/class.tx_xxnews_tca.php:tx_examples_tca->readersInfo', 
     'parameters' => array(
      'read' => FALSE 
     ) 
    ) 
), 

class.tx_xxnews_tca.php:

class tx_examples_tca { 

    /** 
    * @var \Vendor\XxNews\Domain\Repository\NewsRepository $newsRepository 
    */ 
    protected $newsRepository; 

    /** 
    * Class constructor 
    */ 
    public function __construct() { 
     $this->newsRepository = new \Vendor\XxNews\Domain\Repository\NewsRepository; 
    } 

    public function readersInfo($params) { 

     /** 
     * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository $feUserRepository 
     */ 
     $feUserRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Domain\\Repository\\FrontendUserRepository'); 
     $allUsers = $feUserRepository->findAll(); 
     $user = $feUserRepository->findByUid(1); 

     var_dump($allUsers); //EMPTY 
     var_dump($user);  //OK 
    } 
} 

謝謝。

回答

4

問題是,當TYPO3引入Extbase時,前端用戶的「記錄類型」被集成。 (這只是一個例子,將在6.2版本中刪除)。

必須要麼設置每個前臺用戶的記錄類型的擴展名(它在你的延伸ext_tables.php定義),也可以刪除(清除)記錄類型的必要性的記錄類型

config.tx_extbase.persistence.classes.Vendor/MyExtension/Domain/Model/User.mapping.recordType = 

編輯: 順便說一句,你應該注入資源庫,而不是使用makeInstance:

/** 
* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository 
* @inject 
*/ 
protected $feUserRepository; 
+0

嗨洛倫茨。我沒有擴展FrontendUser模型,所以我沒有定義任何記錄類型。我用'Tx_Extbase_Domain_Model_FrontendUser'更新了字段tx_extbase_type,但仍然沒有任何內容由findAll()返回。我沒有擴展模型,我只想使用核心模型獲取fe用戶列表。謝謝。 – cili

+1

它是前端還是後端擴展?存儲PID是否設置? – lorenz

+0

這是一個與fe_users相關的新聞擴展。請檢查更新。 – cili