我只是想尝试构建TYPO3页面上的示例,请参阅link . 看起来控制器中的某些东西出了问题 . 我正在使用以下代码
class Tx_Mtclnt_Controller_AdsController
extends Tx_Extbase_MVC_Controller_ActionController {
public function listAction() {
$adsRepository = t3lib_div::makeInstance('Tx_Mtclnt_Domain_Repository_AdsRepository');
$ads = $adsRepository->findAll();
$this->view->assign('ads', $ads);
}
}
我收到以下错误:
1:PHP Catchable致命错误:传递给TYPO3 \ CMS \ Extbase \ Persistence \ Repository :: __ construct()的参数1必须实现接口TYPO3 \ CMS \ Extbase \ Object \ ObjectManagerInterface,没有给出,在/ home / mtclnt02 / typo3_src中调用第4431行的-6.2.9 / typo3 / sysext / core / Classes / Utility / GeneralUtility.php,在/home/mtclnt02/typo3_src-6.2.9/typo3/sysext/extbase/Classes/Persistence/Repository.php第75行中定义(更多信息)在第101行的/home/mtclnt02/typo3_src-6.2.9/typo3/sysext/core/Classes/Error/ErrorHandler.php文件中抛出TYPO3 \ CMS \ Core \ Error \ Exception .
1 回答
您获得的错误来自您尝试创建的存储库 . 类
TYPO3\CMS\Extbase\Persistence\Repository
有一个构造函数,它需要\TYPO3\CMS\Extbase\Object\ObjectManagerInterface
作为参数 . 由于您未在t3lib_div::makeInstance
中传递objectManager类,因此会引发错误 . 您可以通过使用如下所示的依赖注入来避免这种情况 .但是我在这里也看到了 general problem ,因为你引用的Extbase / Fluid书在某些主题上已经过时了 . 从我的观点来看,如果你想要理解Extbase / Fluid扩展的 concept and architecture ,那么所提到的书是一个非常有用的资源,但是因为本书已经写好了,所以TYPO3中的很多东西都已经改变了 .
如果您想从TYPO3 6.2或更高版本的TYPO3扩展开发开始,我建议您安装扩展名extension builder并使用它来创建您的第一个扩展 . 本手册包含一个简短但有用的users manual,它将指导您完成创建简单TYPO3扩展的基础知识 .
使用扩展构建器创建第一个扩展后,您可以通过向扩展程序集创建的代码添加功能来进一步采取措施 .