TYPO3扩展生成视图错误

时间:2015-01-27 22:29:03

标签: php typo3 typo3-6.2.x

我正在构建我的第一个TYPO3扩展程序,我只想尝试构建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中调用第4431行上的/typo3_src-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行(更多信息)

     

文件中抛出TYPO3 \ CMS \ Core \ Error \ Exception   第101行/home/mtclnt02/typo3_src-6.2.9/typo3/sysext/core/Classes/Error/ErrorHandler.php。

1 个答案:

答案 0 :(得分:0)

您从您尝试创建的存储库获得的错误结果。类TYPO3\CMS\Extbase\Persistence\Repository有一个构造函数,需要\TYPO3\CMS\Extbase\Object\ObjectManagerInterface作为参数。由于您未在t3lib_div::makeInstance中传递objectManager类,因此会引发错误。您可以通过使用如下所示的依赖注入来避免这种情况。

/**
 * @var Tx_Mtclnt_Domain_Repository_AdsRepository
 * @inject
 */
protected $adsRepository;

public function listAction() {
  $adsRepository = $this->adsRepository->findAll();
}

但我在这里也看到了一般问题,因为你引用的Extbase / Fluid书在某些主题上已经过时了。从我的观点来看,如果你想了解Extbase / Fluid扩展的概念和架构,那么所提到的书是一个非常有用的资源,但不是代码示例任何更多,因为自书写完以来,TYPO3中的许多事情都发生了变化。

如果您想从TYPO3 6.2或更高版本的TYPO3扩展程序开始,我建议您安装扩展程序extension builder并使用它来创建您的第一个扩展程序。本手册包含一个简短但有用的users manual,它将指导您完成创建简单TYPO3扩展的基础知识。

使用扩展构建器创建第一个扩展后,您可以通过向扩展程序集创建的代码添加功能来进一步采取措施。

相关问题