TYPO3 存储库外部控制器

问题描述

我正在使用 TYPO3 10.4.15 并尝试为我自己的扩展编写一个 TcaProcFunc。

namespace HGA\Album\UserFunc;

use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Object\ObjectManager;
use HGA\Album\Domain\Repository\AlbumRepository;
use HGA\Album\Domain\Model\Album;
use TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface;

class TcaProcFunc
{   
    /**
     * @param array $config
     *
     */
    public function getLink(&$config)
    {
        $ret = [];
        $objectManager = GeneralUtility::makeInstance(ObjectManager::class);
        $albumRepository= $objectManager->get(AlbumRepository::class);
        $albums = $albumRepository->findAll();
        foreach ($albums as $album){
            $ret[] = ["Test1","Test1"];
        }
        $i = count($albums);
            error_log("Album: " . $i,0 );
        $ret[] = ["Test","Test"];
        $config['items'] = $ret;
//      error_log("UserFunc: " . var_export($config,true),0);
    }

}

问题是,findall() 不提供任何结果。 $albums为空,但数据库中有一条记录。

HGA 是我的供应商名称,Album 是扩展名。 TcaProcFunc 正常工作,但我无法访问扩展数据库

谁能告诉我,我的代码有什么问题,或者我可以怎样做才能找到问题?

提前致谢。

解决方法

最后我用 ConnectionPool 做到了

namespace HGA\Album\UserFunc;

use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Object\ObjectManager;
use TYPO3\CMS\Core\Database\ConnectionPool;

class TcaProcFunc
{   
    /**
     * @param array $config
     *
     */
    public function getLink(&$config)
    {
        $ret = [];
        $albums = GeneralUtility::makeInstance(ConnectionPool::class)
           ->getConnectionForTable('tx_album_domain_model_album')
           ->select(
          ['uid','album_artist','album'],'tx_album_domain_model_album',[]
           )->fetchAll();       
        foreach ($albums as $album){
            $ret[] = [$album['album_artist'] . ": " . $album['album'],$album['uid']];
        }
        $config['items'] = $ret;
    }
}