我正在建立一个包含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>
时,结果始终是NULL
我在URL中添加的任何参数。我尝试用view->assign
分配另一个固定变量,它也是NULL
。上面的代码没有语法错误,我正在使用PHPStorm,它找到了父类,并显示我的initializeViewVariables
方法覆盖了AbstractFluxController
中的那个。
我尝试过的:
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
文件中有自动加载信息它仍然无法正常工作。但是,如果我使用userFunc
在页面的Typoscript中调用类的方法,则自动加载有效。你看到我失踪了吗?
现在回答我自己的问题(希望我以后能够添加更多细节):为了让某个页面调用上面的Controller,我们需要添加一个动作,即使是一个空的动作,同名模板。例如,如果我们的页面模板是Foo.html
,那么如果我们添加一个动作方法,它将起作用:
public function fooAction() {
}
到PageController
班