как включить общедоступные ресурсы в расширение typo3 extbase

Я создаю расширение, которое создает бэкэнд-модуль, который позволяет be_users изменять размеры изображений. Я пытаюсь добавить / включить файлы css и javascript с помощью pageRenderer, но файлы никогда не включаются. Я могу применить только CSS, если добавить его непосредственно в жидкий шаблон с помощью тега стиля и включить javascript-файл с тегом скрипта.

Я попробовал что-то вроде этого в контроллере

protected $pageRenderer;

….

  $this->pageRenderer = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Page\\PageRenderer'); $this->pageRenderer->addCssFile('/typo3conf/ext/extKey/Resources/Public/css/styles.css'); $this->pageRenderer->loadJquery(); 

также попробовал с viewHelper

 namespace Vendor\ExtKey\ViewHelpers; class AddJsFileViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Be\AbstractBackendViewHelper { public function render() { $doc = $this->getDocInstance(); $pageRenderer = $doc->getPageRenderer(); $pageRenderer->loadJquery(); } } 

и в моем искушении

 {namespace pager=Vendor\ExtKey\ViewHelpers} <f:layout name="Default" /> <f:section name="main"> <pager:addJsFile /> 

еще ничего

Я не уверен, как вы определяете шаблон для своего бэкэнд, но похоже, что это обычно происходит с помощью вспомогательного помощника контейнера backend, который уже имеет функции для этого:

 <f:be.container addCssFile="{f:uri.resource(path:'css/style.css')}" addJsFile="{f:uri.resource(path:'js/scripts.js')}"> [your templates content] </f:be.container> 

В TYPO3 7.6.X это должно быть следующим

 <f:be.container includeCssFiles="{style:'{f:uri.resource(path:\'css/style.css\')}'}" includeJsFiles="{script:'{f:uri.resource(path:\'js/script.js\')}'}" > <!-- Template Code --> </f:be.container> 

Поскольку includeCssFiles и includeJsFiles требует передать массив, мы можем включить любое количество js и css.

я думаю, что проблема заключалась в том, что мне нужна ViewHelper для рендеринга и начала / конца страницы

текущая реализация подобна этой

ViewHelper

 namespace Vendor\ExtKey\ViewHelpers; class AddPublicResourcesViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Be\AbstractBackendViewHelper { public function render() { $doc = $this->getDocInstance(); $pageRenderer = $doc->getPageRenderer(); $extRelPath = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath("ext_key"); $pageRenderer->addCssFile($extRelPath . "Resources/Public/css/styles.css"); $pageRenderer->loadJquery(); $pageRenderer->addJsFile($extRelPath . "Resources/Public/js/app.js"); $output = $this->renderChildren(); $output = $doc->startPage("title") . $output; $output .= $doc->endPage(); return $output; } } 

шаблон

 {namespace pager=Vendor\ExtKey\ViewHelpers} <f:layout name="Default" /> <f:section name="main"> <pager:addPublicResources /> 

Pagerender :: loadJjquery работает и доступен как это

 TYPO3.jQuery(function($) { });