【问题标题】:Get TYPO3 Plugin settings from FlexForms in controller从控制器中的 FlexForms 获取 TYPO3 插件设置
【发布时间】:2013-11-11 04:28:59
【问题描述】:

我有一个使用 FlexForm MyExtFlexForm 的 FE 插件,用于设置某些配置,例如 limit or SourcePage etc..

在我的控制器操作list 中,我使用$this->settings 获取这些设置。到现在都可以正常使用。

现在,我进行 AJAX 调用操作 update,我需要使用之前通过 FlexForm 为该页面上的 FE 插件设置的相同设置。 $this->settings does not show anything

我检查了$GLOBALS['TSFE']->tmpl->setup['plugin']['MyExt.']['settings.'],但 FlexForm 中定义的设置均未在此处显示。

我该如何解决这个问题?

编辑:

我的 Flexform 示例如下所示:

<sheets>
        <sDEF>
            <ROOT>
                <TCEforms>
                    <sheetTitle>View Settings</sheetTitle>
                </TCEforms>
                <type>array</type>
                <el>
                    <switchableControllerActions>
                        <TCEforms>
                            <label>Select</label>
                            <config>
                                <type>select</type>
                                <items>
                                    <numIndex index="0">
                                        <numIndex index="0">MyFunction</numIndex>
                                        <numIndex index="1">MyExt->list</numIndex>
                                    </numIndex>
                                </items>
                            </config>
                        </TCEforms>
                    </switchableControllerActions>

                    <settings.flexform.limit>
                        <TCEforms>
                            <label>Number of items to be displayed</label>
                            <config>
                                <type>input</type>
                                <size>10</size>
                            </config>
                        </TCEforms>
                    </settings.flexform.limit>
                </el>
            </ROOT>
        </sDEF>
    </sheets>

然后我对我的控制器操作进行 AJAX 调用并打印此 $this-&gt;settings ,不显示任何设置。

【问题讨论】:

  • 那是常见的 AJAX 还是 eID?
  • 这是常见的 AJAX。不是电子身份证。
  • 我不明白使用 AJAX 或普通 GET 调用页面时没有什么异常,我无法重现您的问题,也许这些请求与您的 TS 有关?
  • TS 看起来也不错。请求调用正在成功进行。我的 ajax TS 很像这样stackoverflow.com/questions/19688172/…

标签: php typo3 typoscript extbase


【解决方案1】:

最简单的解决方案是在 FlexForm 中正确命名字段,即,如果您的字段以 settings. 为前缀,它将在 $this-&gt;settings 数组中可见:

<settings.myField>
    <TCEforms>
        <label>My very special setting</label>
        <config>
            <type>input</type>
        </config>
    </TCEforms>
</settings.myField>

控制器:

$mySetting = $this->settings['myField'];

另一方面,如果您打算将 TS 设置与 FlexForm 设置合并,您可以在其前面加上一些其他词,例如:&lt;settings.flexform.myField&gt;,然后访问它:

$fromTypoScript = $this->settings['myField'];
$fromFlexform   = $this->settings['flexform']['myField'];

// or...
$myMergedSetting = (!$this->settings['flexform']['myField'])
                   ? $this->settings['myField']
                   : $this->settings['flexform']['myField'];

【讨论】:

  • 问题出在进行 AJAX 调用时。否则我可以访问设置。用 FlexForm 编辑了我的问题。谢谢
【解决方案2】:

我刚刚遇到了一个解决方案:https://forum.typo3.org/index.php/t/194022/eigener-extbase-controller-keine-flexform-werte

我包含这样的插件:

AJAX_PAGE = PAGE
AJAX_PAGE {
    typeNum = 2

    10 < tt_content.list.20.myPlugin

    config {
        disableAllHeaderCode = 1
        xhtml_cleaning = 0
        admPanel = 0
        debug = 0
        no_cache = 1
    }
}

为了正确加载设置,它应该是:

AJAX_PAGE = PAGE
AJAX_PAGE {
    typeNum = 2

    10 < styles.content.get
    10 {
        select.where = colpos = 0
        select.andWhere = list_type='myPlugin'
    }

    config {
        disableAllHeaderCode = 1
        xhtml_cleaning = 0
        admPanel = 0
        debug = 0
        no_cache = 1
    }
}

【讨论】:

    猜你喜欢
    • 2013-08-14
    • 2013-12-19
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    相关资源
    最近更新 更多