TYPO3 - Загрузить файл css при инициализации, когда расширения загружаются в 8LTS? getPageRenderer () обесценивается

Раньше я загружал файл css, когда мое расширение загружалось следующим образом в 7LTS:

/**
 * Init
 *
 * @return void
 */
public function initializeAction() {

    $GLOBALS['TSFE']->getPageRenderer()->addCssFile('typo3conf/ext/myextension/Resources/Public/Css/myextension.css');

}

В 8LTS выдает ошибку:

Неперехваченный вызов исключения TYPO3 для неопределенного метода TYPO3 \ CMS \ Frontend \ Controller \ TypoScriptFrontendController :: getPageRenderer ()

Предположительно getPageRenderer () устарел:

Как я могу загрузить файл css, когда мое расширение теперь загружается?

Я пробовал это, но это не работает:

/**
 * Init
 *
 * @return void
 */
public function initializeAction() {

    $pageRender = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Page\PageRenderer::class);
    $pageRender->addCssFile('typo3conf/ext/myextension/Resources/Public/Css/basic.css');       

}

Повторяющаяся ссылка описывает альтернативный способ (через шаблон) ... но не через действие ... так что, на мой взгляд, дубликата нет


person Philipp M    schedule 22.08.2017    source источник
comment
См. мой ответ на этот вопрос здесь.   -  person Mathias Brodala    schedule 22.08.2017
comment
О, я этого не видел ... спасибо. Тем временем я попытался сделать это в контроллере, как описано в вашей ссылке ... знаете ли вы, почему он не работает?   -  person Philipp M    schedule 22.08.2017
comment
Почему бы не использовать vhs:asset? (Используется только версия 7, не уверен, что vhs: asset по-прежнему подходит для версии 8). Я использую vhs: asset для объединения нескольких файлов CSS. И загружать некоторые другие файлы CSS только тогда, когда я использую определенный шаблон / плагин   -  person nbar    schedule 22.08.2017
comment
@nbar, потому что было бы неплохо решать такие вещи в контроллере, а не в шаблоне   -  person feeela    schedule 09.05.2018


Ответы (1)


Сам PageRenderer не является устаревшим, просто метод ->getPageRenderer(), поскольку PageRenderer теперь является синглтоном.

Так что вы делаете $pageRenderer = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Page\PageRenderer::class); и все в порядке.

person Georg Ringer    schedule 22.08.2017