Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从控制器中的FlexForms获取TYPO3插件设置_Php_Typo3_Typoscript_Extbase - Fatal编程技术网

Php 从控制器中的FlexForms获取TYPO3插件设置

Php 从控制器中的FlexForms获取TYPO3插件设置,php,typo3,typoscript,extbase,Php,Typo3,Typoscript,Extbase,我有一个FE插件,它使用FlexFormMyExtFlexForm,用于设置某些配置,如limit或SourcePage等。 在我的控制器操作列表中我使用$this->settings获得这些设置。到现在为止一切都很好 现在,我对actionupdate进行AJAX调用,我需要使用前面通过FlexForm为本页上的FE插件设置的相同设置$this->设置不显示任何内容 我选中了$GLOBALS['TSFE']->tmpl->setup['plugin']['MyExt.]['settings.]

我有一个FE插件,它使用FlexForm
MyExtFlexForm
,用于设置某些配置,如
limit或SourcePage等。

在我的控制器操作
列表中
我使用
$this->settings
获得这些设置。到现在为止一切都很好

现在,我对action
update
进行AJAX调用,我需要使用前面通过FlexForm为本页上的FE插件设置的相同设置<代码>$this->设置不显示任何内容

我选中了
$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_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
    }
}

查看设置
排列
挑选
选择
我的功能
MyExt->list
要显示的项目数
输入
10

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

最简单的解决方案是在FlexForm ie中正确命名字段,前提是您的字段将以
设置作为前缀。
它将在
$this->settings
数组中可见:

<settings.myField>
    <TCEforms>
        <label>My very special setting</label>
        <config>
            <type>input</type>
        </config>
    </TCEforms>
</settings.myField>
另一方面,如果您计划将TS设置与FlexForm设置合并,您可以在其前面添加一些其他单词,如:
,然后访问它:

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

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

我刚刚遇到了一个解决方案:

我包括的插件如下:

<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_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\u PAGE=PAGE
AJAX_页面{
typeNum=2
10
为了正确加载设置,应:

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
    }
}
AJAX\u PAGE=PAGE
AJAX_页面{
typeNum=2
10
问题在于进行AJAX调用时。我可以访问其他设置。用FlexForm编辑了我的问题。谢谢这是普通的AJAX还是eID?这是普通的AJAX。不是eID。我不明白使用AJAX或common get调用页面时没有什么不寻常的地方,我无法重现您的问题,也许您的TS对这些请求有什么影响?TS看起来也不错。请求呼叫正在成功进行。我的TS for ajax非常类似于此,也许这也会有所帮助: