0

すべてのフロントエンド ユーザーを取得する必要がある拡張機能があります。私はこれを試しました:

    /**
     * @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() は空のオブジェクトを返します。ここで何が間違っていますか?

アップデート:

ニュースの延長についてです。tx_xxnews_domain_model_news と fe_users の間に mm の関係があるため、どのユーザーがどのニュースにアクセスしたかを追跡できます。

ニュースの 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

1 に答える 1