FluidTYPO3 fluidpages –找不到自定义页面控制器

时间:2019-03-05 14:33:07

标签: controller typo3 fluid typo3-9.x

我正在建立一个带有TYPO3 9.5和扩展名Fluid Powered TYPO3的网站,我将需要在我的Fluidpages模板中访问GET和POST变量。

我试图创建一个自定义的PageController来做到这一点;这是我在…myext/Classes/Controller/PageController.php中添加的类:

<?php

namespace MyVendor\MyExt\Controller;

use FluidTYPO3\Fluidpages\Controller;

class PageController extends Controller\PageController
{
    protected function initializeViewVariables() {
        parent::initializeViewVariables();
        $GETarray = \TYPO3\CMS\Core\Utility\GeneralUtility::_GET();
        $this->view->assign('GET', $GETarray);
    }
}

不幸的是,该方法似乎从未执行过,好像找不到我的课。当我在模板文件中使用GET显示<f:debug>{GET}</f:debug>时,无论我在URL中添加什么参数,结果始终为NULL。我尝试用view->assign分配另一个固定变量,它也是NULL。上面的代码没有语法错误,我使用的是PHPStorm,它将查找父类并显示我的initializeViewVariables方法覆盖AbstractFluxController中的方法。

我尝试过的:

  • 我按照文档中的说明here进行操作:用MyVendorName.Myextensionkey形式的密钥注册了扩展名。我创建了一个ClassAliasMap.php文件,即使我认为TYPO3 9.5不需要该文件?
  • 在扩展名的composer.json文件中,我添加了:
    "autoload": {
        "psr-4": {
            "MyVendor\\MyExt\\": "Classes"
        }
    }
    
    在整个TYPO3项目的composer.json中,我输入:
    "autoload": {
        "psr-4": {
            "MyVendor\\MyExt\\": "public/typo3conf/ext/myext/Classes"
        }
    }
    
    并且我已经验证了使用vendor/composer/autoload_psr4.php命令后此路径是否出现在composer dump-autoload中。我在ext_emconf.php文件中也有自动加载信息
  • 清除了TYPO3中的所有缓存
  • 当我查看页面时,我在TYPO3或Apache日志中都没有任何错误消息

它仍然不起作用。但是,如果我使用userFunc在页面的典型字中调用类的方法,则自动加载有效。看到我想念的东西了吗?

1 个答案:

答案 0 :(得分:0)

现在回答我自己的问题(希望以后可以添加更多详细信息):为了在特定页面上调用上述Controller,我们需要添加一个操作,甚至是一个空的操作。与模板同名。例如,如果我们的页面模板为Foo.html,则在添加操作方法后它将起作用:

public function fooAction() {

}

转到PageController