首页 文章

TYPO3扩展生成视图错误

提问于
浏览
0

我只是想尝试构建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 回答

  • 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();
    }
    

    但是我在这里也看到了 general problem ,因为你引用的Extbase / Fluid书在某些主题上已经过时了 . 从我的观点来看,如果你想要理解Extbase / Fluid扩展的 concept and architecture ,那么所提到的书是一个非常有用的资源,但是因为本书已经写好了,所以TYPO3中的很多东西都已经改变了 .

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

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

相关问题