问题描述
我正在使用 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;
}
}