Жидкие страницы FluidTYPO3 - не найден пользовательский контроллер - PullRequest
1 голос
/ 05 марта 2019

Я создаю веб-сайт с TYPO3 9.5 и расширениями Fluid Powered TYPO3 , и мне потребуется доступ к переменным GET и POST в моих шаблонах FluidPages.

Я попытался создать собственный 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"
        }
    }
    
    и в composer.json для всего моего проекта TYPO3 я поставил:
    "autoload": {
        "psr-4": {
            "MyVendor\\MyExt\\": "public/typo3conf/ext/myext/Classes"
        }
    }
    
    и я убедился, что этот путь появляется в vendor/composer/autoload_psr4.php после того, как я использовал команду composer dump-autoload. У меня также есть информация об автозагрузке в ext_emconf.php файле
  • очищены все кэши в TYPO3
  • У меня нет сообщений об ошибках ни в TYPO3, ни в журналах Apache при просмотре страницы

И все равно не работает. Однако автозагрузка работает, если я вызываю метод класса в Typoscript страницы с userFunc. Вы видите, чего мне не хватает?

1 Ответ

0 голосов
/ 21 марта 2019

Отвечая на мой собственный вопрос на данный момент (надеюсь, я смогу добавить больше деталей позже): для того, чтобы вышеуказанный контроллер вызывался для определенной страницы, нам нужно добавить действие, даже пустое, с помощьюто же имя, что и шаблон.Например, если наш шаблон страницы Foo.html, он будет работать, если мы добавим метод действия:

public function fooAction() {

}

в класс PageController

...