TYPO3 8.7的子元素m:n更新不起作用

时间:2018-06-26 06:19:01

标签: typo3 typo3-8.x

我有一个扩展程序和一个前端表单来创建和更新元素。用户可以创建带有多个日期的发票,这些日期存储为m:n记录。

创建发票和日期可用于:

<f:form.checkbox name="newRechnungen[termine][]" value="{termin.uid}" />

但是,如果我编辑发票并提交表格,则会出现错误:

<f:form.checkbox name="rechnungen[termine][]" value="{termin.uid}" />

显示错误,例如:

  

表单字段“ [items] [] []”无效。原因:“ []”不是最后一个参数,而是中间的某个地方(例如foo [] [bar])

像描述的那样更改标签以解决

<f:form.checkbox name="rechnungen[termine][{key}]" value="{termin.uid}" />

显示错误:

  

#1297759968:在属性路径“文件”处进行属性映射时发生异常:PHP警告:spl_object_hash()期望参数1为对象,在/usr/share/typo3/typo3_src-7.6.2/typo3/sysext/中给定null extbase / Classes / Persistence / ObjectStorage.php第155行=

文档页面上用enctype="multipart/form-data"标记的表单解决方案无效。

有什么办法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

检查为以下复选框生成的HTML是否具有正确的格式。

<f:form.checkbox name="rechnungen[termine][{key}]" value="{termin.uid}" />

HTML中必须包含以下内容:<input type="checkbox" name="tx_yourext_plugin[rechnungen][termine][1] value="__your value__" />

tx_yourext_plugin[rechnungen][termine][]这样的名称将无效。

根据以上错误,我可以说您的{key}变量为null。尝试使用<f:debug>{key}</f:debug>来检查它是否为空。

更新

添加您的setter参数setTermine(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $temines = null)

答案 1 :(得分:0)

我现在可以通过取消初始化initializeAction中的空值来解决它:

foreach($args['rechnungen']['termine'] as $key => $value) {
        if (intval($value) === 0) {
            unset($args['rechnungen']['termine'][$key]);
        }
    }