gpt4 book ai didi

php - 从 Controller 中的 FlexForms 获取 TYPO3 插件设置

转载 作者:行者123 更新时间:2023-12-05 02:23:42 26 4
gpt4 key购买 nike

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

在我的 Controller 操作 list 中,我使用 $this->settings 获取这些设置。到目前为止工作正常。

现在,我对操作 update 进行 AJAX 调用,我需要使用之前通过 FlexForm 在此页面上为 FE 插件设置的相同设置。 $this->settings 不显示任何内容

我检查了 $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>

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

最佳答案

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

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

Controller :

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

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

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

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

关于php - 从 Controller 中的 FlexForms 获取 TYPO3 插件设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19701908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com