Я создаю расширение, которое создает бэкэнд-модуль, который позволяет 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($) { });