如何将公共资源包含到typo3 extbase扩展中 [英] how to include public resources to typo3 extbase extension

查看:58
本文介绍了如何将公共资源包含到typo3 extbase扩展中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在构建一个扩展程序,该扩展程序创建了一个后端模块,该模块使be_users可以调整图像大小. 我正在尝试使用pageRenderer添加/包括CSS和javascript文件,但文件从未包含在内,如果使用样式标签将其直接添加到Fluid Template中并使用脚本标签包含javascript文件,则我只能应用CSS. /p>

我在控制器中尝试过类似的方法

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 />

...

一无所有

解决方案

我认为问题是我的ViewHelper需要renderChilden和开始/结束页面

当前的实现方式就是这样

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($) {

});

I'm building an extension that creates a backend module that enables be_users to resize images. I'm trying to add / include css and javascript files by using the pageRenderer but the files are never included I can only apply css if add it directly in the fluid Template using a style tag and include the javascript file with a script tag.

I tried something like this in the controller

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();

also tried with a 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();
    }
}

and in my tempate

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

<f:section name="main">
    <pager:addJsFile />

...

still nothing

解决方案

i think the problem was my ViewHelper need to renderChilden and start/end page

current implementation is like this

the 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;
    }
}

the template

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

<f:section name="main">
<pager:addPublicResources />

Pagerender::loadJjquery is working and accessible like this

TYPO3.jQuery(function($) {

});

这篇关于如何将公共资源包含到typo3 extbase扩展中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆