我正在建立一个带有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
中的方法。
我尝试过的:
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
在页面的典型字中调用类的方法,则自动加载有效。看到我想念的东西了吗?
答案 0 :(得分:0)
现在回答我自己的问题(希望以后可以添加更多详细信息):为了在特定页面上调用上述Controller,我们需要添加一个操作,甚至是一个空的操作。与模板同名。例如,如果我们的页面模板为Foo.html
,则在添加操作方法后它将起作用:
public function fooAction() {
}
转到PageController
类